使用QuickType生成C#对象时遇ParseStringConverter找不到错误求助
解决CS0246: 找不到'ParseStringConverter'的问题
方案1:补全QuickType生成的ParseStringConverter辅助类
ParseStringConverter是QuickType为System.Text.Json生成的自定义转换器,用于将JSON中的字符串类型数字转为C#的long类型。你大概率只复制了实体类代码,遗漏了这个辅助类。将以下代码添加到同一个QuickType命名空间下即可:
public partial class ParseStringConverter : JsonConverter<long> { public override long Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType == JsonTokenType.String) { if (long.TryParse(reader.GetString(), out long result)) { return result; } } return reader.GetInt64(); } public override void Write(Utf8JsonWriter writer, long value, JsonSerializerOptions options) { writer.WriteStringValue(value.ToString()); } }
方案2:切换为Newtonsoft.Json适配代码
你当前使用的是Newtonsoft.Json,但QuickType默认生成的是System.Text.Json兼容代码,两者特性不兼容,可通过以下步骤修改适配:
- 替换所有
[JsonPropertyName("xxx")]为Newtonsoft的[JsonProperty("xxx")] - 处理字符串转数字的逻辑,二选一即可:
- 选项A:利用Newtonsoft内置的字符串转数字支持,在反序列化时配置参数:
此方式可直接移除所有var settings = new JsonSerializerSettings { AllowReadingFromString = true }; var sessionDetails = JsonConvert.DeserializeObject<SessionDetails>(jsonString, settings);[JsonConverter(typeof(ParseStringConverter))]属性。 - 选项B:自定义Newtonsoft专属转换器:
然后将属性上的转换器改为public class StringToLongConverter : JsonConverter<long> { public override long ReadJson(JsonReader reader, Type objectType, long existingValue, bool hasExistingValue, JsonSerializer serializer) { if (reader.Value is string str) { long.TryParse(str, out long result); return result; } return Convert.ToInt64(reader.Value); } public override void WriteJson(JsonWriter writer, long value, JsonSerializer serializer) { writer.WriteValue(value.ToString()); } }[JsonConverter(typeof(StringToLongConverter))]
- 选项A:利用Newtonsoft内置的字符串转数字支持,在反序列化时配置参数:
- 替换
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]为[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
方案3:重新生成适配Newtonsoft.Json的代码
在QuickType生成代码时,选择Serializer为Newtonsoft.Json,生成的代码会直接适配你当前使用的库,自动包含对应转换器,无需手动修改。
内容的提问来源于stack exchange,提问作者Alex Baker
相关产品推荐
相关产品推荐

