繁体   English   中英

使用 C# 从嵌套对象中获取值

[英]Getting values from nested object with C#

我有这个对象,我试图在遥测中的位置字段中获取纬度和经度值。 我是 c# 新手,但知道 python。 我会在 python 中做的是:

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,
            }
        }

正如我在评论中所说,下载 Newtonsoft.Json

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

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

首先,为您的数据生成模型。 您可以通过创建类手动完成,或者如果您在 Visual Studio 中,这会很有帮助:

编辑 => 选择性粘贴 => 将 JSON 粘贴为类。 这将为您生成类。

之后,使用 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM