2016-11-20 111 views
0

这是我的自定义JSON转换器的一部分:如何在ReadJson方法中从JsonReader获取所有字符串?

public class ExpandoConverter : JsonConverter 
{ 
    public override bool CanConvert(Type objectType) 
    { 
     return typeof(Expando).IsAssignableFrom(objectType); 
    } 

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    { 
     if (reader.TokenType == JsonToken.Null) 
      return null; 

     /// How can I get all json string from reader at this point like that: 
     /// string js= reader.ReadStringToEnd(); 

我不想让所有的序列化的字符串,我需要转换的目标的数据。

例:

{....................... { “ID”:3, “名”: “MyExpando1”}}

+0

我想你可以只用'词典<字符串,对象>'做到这一点,因为这是一个expando对象本质上 – Icepickle

+0

不,它不起作用,因为我可以通过JObject.Load(reader)获取数据,但是当我尝试向我terate JObject并填充我的DynamicObject(Expando)。主要问题是铸造问题。 var j = JObject.Load(reader); var expando = new Expando(); foreach(j中的var项) {expando.SetProperty(item.Key,item.Value)// TypeCastingException} – ozz

+0

难道你不能只是阅读(在你的转换器里面,如果你愿意的话):'var dictionary = serializer。反序列化>(reader);'然后遍历字典的键? – Icepickle

回答

0

我这个管理有什么用JObject和加载读者进入JObject像这样:

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    { 
     JObject jObject = JObject.Load(reader); 
     var dictionary = serializer.Deserialize<Dictionary<string, object>>(jObject); 
    } 
相关问题