2017-02-06 3 views
-1

У меня есть этот объект, и я пытаюсь получить значения lat и lon в поле местоположения в телеметрии. Я новичок в C#, но знаю python. То, что я сделал бы в питон был:Получение значений из вложенного объекта с C#

item.details["telemetry"].location.lat 

Может кто-то пожалуйста, покажите мне, как это должно быть сделано в C#?

"details": { 
      "asset": { 
       "id": "5ca12266-35fe-4f75-8593-588fba777d6d", 
       "name": "ZS-FOO" 
      }, 
      "assetType": { 
       "id": "87bc0a83-045d-4810-888c-237b5ef17ea4", 
       "name": "FOO" 
      }, 
      "telemetry": { 
       "flags": 0, 
       "ownerId": "4adc68e4-7113-4b0f-8aba-dea213e8a948", 
       "originId": "09e0021f-9c54-425b-ae23-cbfe3c786a66", 
       "type": "telemetry", 
       "linked": ["5ca12266-35fe-4f75-8593-588fba777d6d"], 
       "date": "2017/01/20 13:46:01", 
       "received": "2017/01/20 13:46:21", 
       "active": true, 
       "location": { 
        "lon": 116072, 
        "lat": -87448, 
        "speed": 74, 
        "altitude": 98.228, 
        "heading": 56, 
        "accuracy": 5, 
        "age": 0 
       }, 
       "zones": [], 
       "routes": null, 
       "state": null, 
       "telemetry": { 
        "msg_type": 0, 
        "vert_speed": 1.2, 
        "hdop": 1.65, 
        "vdop": 3.51, 
        "movement": 1, 
        "odo_counter": 162704.12317, 
        "hours_00_counter": 1027.885442, 
        "idle_counter": 0 
       }, 
       "io": null, 
       "spd": null, 
      } 
     } 
+1

Что вы показали здесь, как представляется, json, которое не является основанной на данных структурой данных в C#. Можете ли вы предоставить подробную информацию о структуре данных C#, в которой это будет десериализовано? –

+2

Вы должны использовать парсер JSON для анализа JSON в словаре или объекте. – EvilTak

+0

, который появился в этом /: Console.WriteLine (JsonConvert.SerializeObject (item)); – Harry

ответ

0

Как я сказал в комментарии скачать Newtonsoft.Json

JObject data= JObject.Parse(data); 
JToken details = data["details"]; 

string lat = details["telemetry"]["location"]["lat"].ToString(); 
0

Во-первых, создавать модели для ваших данных. Вы можете сделать это вручную, создав классы или если вы находитесь в Visual Studio, это было бы полезно:

Редактировать => Вставить Special => Вставить JSON как класс. Это создаст классы для вас.

Afterwords, идти с Json.NET или любой другой библиотеки для разбора файла:

public class Program{ 
     static void Main (string[] args){ 
     var client = new WebClient(); 
     var jsonString = client.DownloadString("Your link to Json file"); 
     var response= JsonConvert.DeserializeObject</*Json Class*/>(jsonString); 
     //Now you can retrieve the data like this: 
     var lat = response.details.telemetry.location.lat; 
    } 
} 

Не забудьте импортировать:

using System.Net; 
using Newtonsoft.Json; 
Смежные вопросы