2011-05-09 110 views
0

我想分析的字符串:如何使用Json.Net將JSON字符串解析爲.Net對象?

[ 
    { 
    id: "new01" 
    name: "abc news" 
    icon: "" 
    channels: [ 
    { 
    id: 1001 
    name: "News" 
    url: "http://example.com/index.rss" 
    sortKey: "A" 
    sourceId: "1" 
    }, 
    { 
    id: 1002 
    name: "abc" 
    url: "http://example.com/android.rss" 
    sortKey: "A" 
    sourceId: "2" 
    } ] 
    }, 
{ 
    id: "new02" 
    name: "abc news2" 
    icon: "" 
    channels: [ 
    { 
    id: 1001 
    name: "News" 
    url: "http://example.com/index.rss" 
    sortKey: "A" 
    sourceId: "1" 
    }, 
    { 
    id: 1002 
    name: "abc" 
    url: "http://example.com/android.rss" 
    sortKey: "A" 
    sourceId: "2" 
    } ] 
    } 
] 
+0

我曾嘗試讀取所有文檔,但未成功:D – Thanh 2011-05-09 04:40:47

+0

要創建一個對象或JsonObject? – Phill 2011-05-09 05:53:20

回答

5

您的JSON是不實際的JSON - 你需要逗號域之後:

[ 
    { 
    id: "new01", 
    name: "abc news", 
    icon: "", 
    channels: [ 
    { 
    id: 1001, 
     .... 

假設你已經做了和正在使用JSON.NET ,那麼您將需要類來表示每個元素 - 主數組中的主要元素以及子「Channel」元素。

喜歡的東西:

public class Channel 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string SortKey { get; set; } 
     public string SourceId { get; set; }    
    } 

    public class MainItem 
    { 
     public string Id { get; set; } 
     public string Name { get; set; } 
     public string Icon { get; set; } 
     public List<Channel> Channels { get; set; } 
    } 

由於存在C#成員命名約定和JSON名之間不匹配,則需要每個成員裝飾用的映射告訴JSON解析器什麼JSON領域被稱爲:

public class Channel 
    { 
     [JsonProperty("id")] 
     public int Id { get; set; } 
     [JsonProperty("name")] 
     public string Name { get; set; } 
     [JsonProperty("sortkey")] 
     public string SortKey { get; set; } 
     [JsonProperty("sourceid")] 
     public string SourceId { get; set; }    
    } 

    public class MainItem 
    { 
     [JsonProperty("id")] 
     public string Id { get; set; } 
     [JsonProperty("name")] 
     public string Name { get; set; } 
     [JsonProperty("icon")] 
     public string Icon { get; set; } 
     [JsonProperty("channels")] 
     public List<Channel> Channels { get; set; } 
    } 

一旦你做到了這一點,你可以分析包含字符串您的JSON是這樣的:

var result = JsonConvert.DeserializeObject<List<MainItem>>(inputString); 
+0

謝謝,我會試試你的方式並通知結果。謝謝達米安。 – Thanh 2011-05-09 10:12:14

0

是的,它是JsonConvert.DeserializeObject(json字符串)

嘗試使用JsonConvert.SerializeObject(object)來創建JSON。

相關問題