2009-11-08 36 views

回答

34

Json.NET具有SelectToken。它使用類似的DataBinder.Eval語法通過一個字符串表達式得到JSON:

JObject o = JObject.Parse("{'People':[{'Name':'Jeff'},{'Name':'Joe'}]}"); 

// get name token of first person and convert to a string 
string name = (string)o.SelectToken("People[0].Name"); 

或者,如果你想選擇多個值:

JObject o = JObject.Parse("{'People':[{'Name':'Jeff','Roles':['Manager', 'Admin']}]}"); 

// get role array token of first person and convert to a list of strings 
IList<string> names = (string)o.SelectToken("People[0].Roles").Select(t => (string)t).ToList(); 

文檔:Querying JSON with SelectToken

+0

不錯!有沒有辦法以不區分大小寫的方式來做到這一點?像'JToken.GetValue(「something」,StringComparison.OrdinalIgnoreCase)'? – 2017-02-23 09:29:10

1

您有可以映射JSON的對象層次結構嗎?您可以創建對象樹(即反序列化JSON),並使用LINQ的WhereSelectMany等。

+0

感謝您的答覆馬克。具體來說,我使用twitter.com/status/mentions.json供稿。我希望將每個「狀態」傳遞給HTML Render,而無需知道(在構建時)它正在使用哪些字段,並允許它使用Json版本的SelectSingleNode來拉字段。一個LINQ的例子會幫助很多:) – 2009-11-08 23:13:14

+0

啊,對。它不允許你使用任意字符串,如果這就是你的意思。它將需要每個場景的編碼。 – 2009-11-09 05:09:42

相關問題