我已經有這個使用Silverlight的System.JSON但規格的回答得到了改變,現在我需要做的是在.net 3.5反序列化JSON使用JSON.NET
這裏是我得到
的JSON{"SearchResults":[{"PageCount":"1"},
{"SEARCHVAL":"Result","CATEGORY":"Category1","X":"1","Y":"2"},
{"SEARCHVAL":"AnotherResult","CATEGORY":"Category1","X":"2","Y":"2"}]}
,並使用System.JSON組裝的解決方案是
var resultList = ((JsonArray)searchResults["SearchResults"])
.OfType<JsonObject>()
.Where(o => o.ContainsKey("SEARCHVAL"))
.Select(o => new SearchResult() {
SearchValue = o["SEARCHVALUE"],
Category = o["CATEGORY"].
X = o["X"],
Y = o["Y"]
}).ToList();
我想大部分代碼類似於/一模一樣的,但我不知道有關的containsKey在JSON.net對口。我認爲這是Contains()方法,但我不確定如何使用它,以便我可以獲得SEARCHVAL的X和Y.
UPDATE:
所以這裏是我的代碼來獲得JSON流和解析:
...
Uri uri = new Uri(url);
WebClient client = new WebClient();
ParseJSON(client.OpenRead(uri));
}
private void ParseJSON(Stream stream)
{
if (stream == null)
return;
StreamReader reader = new StreamReader(stream);
JObject searchResult = JObject.Parse(reader.ReadLine());
string x= searchResult["SearchResults"][0]["SEARCHVAL"]["X"].ToString();
string y= searchResult["SearchResults"][0]["SEARCHVAL"]["Y"].ToString();
// use data
...
和我得到的string lat = searchresult...
空例外。任何線索我在哪裏使用JSON.NET出錯?
您已鏈接到JavaScriptSerializer。事實上,如果它不限於Silverlight,那麼使用System.JSON會很好。 – Bahamut