2013-07-16 106 views
0

我從一個外部源獲得一個帶有TONS字段的json。我不關心他們中的大多數,我只需要他們中的「一些」。 (這是在不同的孩子級別)。如何從JSON獲取一些字段?

所以我不需要有一個「強類型」的主題,我猜。試着用:

JavaScriptSerializer js = new JavaScriptSerializer(); 
var obj = jss.Deserialize(myJson); 

,但似乎我不能這樣做呢?我該怎麼做?

使用:

jss.Deserialize<dynamic>(objectText); 

比我不能使用LINQ搜索領域...

回答

1

嘗試使用Newtonsoft Json.NET,它有一個動態JObject這可以解釋相當多的東西也是,如果它是您將能夠使用LINQ查詢它們的子值列表。

3

使用JSON.Net,您可以反序列化爲您定義的對象。您定義的對象只能是部分匹配。 DeserializeObject<>將忽略所有其他JSON字段。

例如JSON:

{ 
    Cat: "Tom", 
    Mouse: "Jerry", 
    Duck: "Donald" 
} 

使用此:

public class LooneyTunes 
{ 
    public string Cat { get; set; } 
    public string Mouse { get; set; } 
} 

var looneyTunes = JsonConvert.DeserializeObject<LooneyTunes>(json); 

這將忽略Duck財產和正確反序列化的休息。因此,使用這種技術,您可以選擇您感興趣的JSON消息的部分。

+1

你可以用JavaScriptSerializer做的一樣。 –

0

您可以創建不需要的類和省略字段。

但我建議有類對(德)序列化有更多的控制。

如前所述,JSON.NET是這類任務中最好的庫之一。點擊以下鏈接

退房,顯示瞭如何反序列化JSON反對,然後得到的值:

https://stackoverflow.com/a/5502317/309395