2016-11-10 4 views
3

У меня есть этот JSON:JSON.NET JObject - как получить значение из этой вложенной структуры JSON

{ 
    "client_id": "26075235", 
    "client_version": "1.0.0", 
    "event": "app.uninstall", 
    "timestamp": 1478741247, 
    "data": { 
     "user_id": "62581379", 
     "site_id": "837771289247593785", 
     "platform_app_id": "26075235" 
    } 
} 

я анализирую его в Json.NET JObject и я могу успешно получить доступ к первому уровню значений с помощью например (Строка) RequestBody.SelectToken («client_id»)

Как получить доступ к значению «user_id» с помощью выражения JPath (или путем доступа к ребенку объект Json.NET JObject)? Это не работает:

(string)RequestBody.SelectToken("data[0].user_id") 

, и я не могу это сделать, чтобы разобрать часть «данными» в формате JSON:

JObject RequestBodyData = JObject.Parse((string)RequestBody.SelectToken("data")); 

как компилятор, кажется, признает RequestBody.SelectToken ("данные ") как объект (я получаю ошибку« Не могу разобрать объект в строку »)

и я не хочу анализировать исходный JSON в пользовательский объект C#, поскольку я разрабатываю решение, которое должно быть способный в целом анализировать JSON в JObject (или любой другой тип общего объекта для обработки JSON), поэтому он может быть p арго в относительно последовательном порядке.

ответ

4

SelectToken("data[0].user_id") не работает, потому что в вашем JSON нет массива. Вместо этого вы должны использовать SelectToken("data.user_id").

Fiddle: https://dotnetfiddle.net/K0X4ht

+0

Cheers Brian :) –

Смежные вопросы