首页 > 解决方案 > 在 JsonConverter.ReadJson 中读取原始输入

问题描述

我正在研究一种原始转换器。反序列化修饰属性时,我需要从源中获取原始字符串。

public class X
{
  [JsonConverter(typeof(MyConverter))]
  public string Y {get;set;}
}

Y将包含一个序列化的对象,比如说{"a":1,"b":2}. 因此,从 JSON 的角度来看,属性 Y 将包含一个 object {"Y":{"a":1,"b":2}}。但是在反序列化时我需要它作为完全相同的字符串返回。

这种方法有效,但是在反序列化并再次序列化时需要双重加载,并且仍然可能会以不同的方式对其进行序列化。

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
  JObject jo = JObject.Load(reader);
  return jo.ToString(serializer.Formatting, serializer.Converters.ToArray());
}

我需要的是允许我从 JSON 对象的开头到结尾读取为原始字符串的东西。不幸的是,这JsonReader是一个标记器,它在阅读时会立即进行转换。

标签: c#jsonjson.net

解决方案


推荐阅读