如何获取 JSON 令牌的值

Ale*_*dra 0 c# json json.net

"message":{
    "type":"text",
    "text":"a message to the service",
    "media":"http://example.com",
    "location":{
        "lat":50.76891,
        "lon":6.11499
    },
    "tracking_data":"tracking data"
}
Run Code Online (Sandbox Code Playgroud)

如何获得 Json、lat 和 lon 子元素的值?

JToken message = data.SelectToken("message");
 var lat = message.Value<double>("lat");
Run Code Online (Sandbox Code Playgroud)

这显示 0,而不是实际值。

use*_*065 5

此问题的快速解决方案是以下代码。

这里的重点是,您必须尊重 JSON 输入的层次结构。lat不是直接在 中message,而是在location对象中。

var data = JObject.Parse(@"{
        ""message"": {
            ""type"":""text"",
            ""text"":""a message to the service"",
            ""media"":""http://example.com"",
            ""location"": {
                ""lat"":50.76891,
                ""lon"":6.11499
            },
            ""tracking_data"":""tracking data""
        }
    }");

var location = data.SelectToken("message.location");
var lat = location.Value<double>("lat");
Run Code Online (Sandbox Code Playgroud)