2016-11-20 109 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); 
    } 
相關問題