У меня уже есть ответ на этот вопрос с помощью System.JSON Silverlight, но спецификации изменились, и теперь мне нужно сделать это в .NET 3.5
вот 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 (), но я не совсем уверен, как его использовать, чтобы я мог получить X и Y ПОИСКА.
ОБНОВЛЕНИЕ:
так вот мой код для получения потока 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?