2016-12-04 27 views
0

我有一個JSON這樣,不得不反序列化:C#反序列化JSON根密鑰未知

{ 
    "0": { 
    "foo_id":"xyz", 
    "bar_id":"abc", 
    "book": { 
     "0": { 
     "title":"hello", 
     "author":"person_x" 
     }, 
     "1": { 
     "title":"hi", 
     "author":"person_y" 
     } 
    }, 
    "1": { 
    "foo_id":"xyz", 
    "bar_id":"abc", 
    "book": { 
     "0": { 
     "title":"hello", 
     "author":"person_a" 
     }, 
     "1": { 
     "title":"bye", 
     "author":"person_b" 
     } 
    }, 
    "random":"string", 
    "other":"thing" 
} 

類似this問題,但給出的答案是不行的,因爲我不擁有的奢侈品創造這樣的

public class RootObject 
{ 
    public Dictionary<string, Object> Objects {get; set;} 
} 

一類的。如果我不是對象領域做的是反序列化後空。

根對象和書籍對象都是動態的。

任何其他方法,將不勝感激,在此先感謝。

回答

1

因爲你有JSON不包含RootObject持有一個字典,你可以直接反序列化到Dictionary像這樣:

類:

public class Item 
{ 
    [JsonProperty("foo_id")] 
    public string FooId { get; set; } 

    [JsonProperty("bar_id")] 
    public string BarId { get; set; } 
} 

反序列化:

var result = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json); 

結果:

result


更新:

既然你已經在你的問題改變了原有的JSON,第二給定JSON可以反序列化這樣:

類別:

public class RootObject 
{ 
    [JsonExtensionData] 
    public Dictionary<string, JToken> Items { get; set; } 

    [JsonProperty("random")] 
    public string Random { get; set; } 

    [JsonProperty("other")] 
    public string Other { get; set; } 
} 

反序列化:

var result = JsonConvert.DeserializeObject<RootObject>(json); 
+0

我仍然有一個RootObject類,這是一個我想反序列化,因爲它有一些其他的數據,我需要。謝謝 – qwerty123

+0

@ querty123重要的是要知道完整的JSON響應的整個結構,以反序列化 – Jim

+0

任何想法如何設置這個JSON,謝謝 – qwerty123