Некоторые предыстории моего вопроса: я хочу десериализовать какой-то ужасный JSON в Json.net. Этот объект json создается ArcGIS Server и отправляет объект 'results', который отформатирован следующим образом:
{ "results" : [ { "layerId" : 10, "layerName" : "Polling Districts", "value" : "MyWard", "displayFieldName" : "Ward", "attributes" : { "OBJECTID" : "61", "Ward" : "MyWard", "Polling Station" : "Childrens Resources Centre", "Polling District" : "E", "Constituency" : "South", "Shape" : "Polygon" } } ] }
Теперь проблема в объектах атрибутов:
{ "OBJECTID" : "61", "Ward" : "MyWard", "Polling Station" : "Childrens Resources Centre", "Polling District" : "E", "Constituency" : "South", "Shape" : "Polygon" }
... с пробелами в некоторых идентификаторах; он генерируется псевдонимом поля 'pretty', а не именем таблицы данных. Я могу использовать linq selectToken, чтобы получить все остальные поля, но я ищу "избирательный участок", в частности.
Я пробовал довольно много вариантов запроса:
string pollingStation = (string)jObj.SelectToken("results[0].attributes[Polling Station]"); // Unexpected character while parsing path indexer: P
string pollingStation = (string)jObj.SelectToken("results[0].attributes[\"Polling Station\"]"); //Unexpected character while parsing path indexer: "
string pollingStation = (string)jObj.SelectToken("results[0].attributes.\"Polling Station\""); // No error, pollingStation is null
string pollingStation = (string)jObj.SelectToken("results[0].attributes.Constituency"); // No error, pollingStation is South (correct)
Я гуглил, искал справку на json.net и прочитал немало вопросов, уже размещенных здесь - ни один из которых, похоже, не касается этого конкретного вопроса Может быть, я просто плотный. Вы также можете сказать, что я не опытный в c # или Linq, и я впервые использую Json.net, поэтому я, вероятно, допустил некоторые ошибки для школьников. Любые предложения приветствуются!