You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取JSON子元素lat与lon的值?现有代码返回0而非真实值

解决JSON中获取lat和lon值的问题

首先得指出你代码里的核心问题:你直接从message节点取lat,但lat和lon其实藏在message的子节点location里面!因为JToken.Value<T>()找不到对应键时,会返回T类型的默认值(double的默认值就是0),所以你才拿到了错误的结果。

下面给你几种靠谱的解决方式:

方法一:直接链式定位节点

利用SelectToken的路径语法,一步到位定位到目标值:

// 假设你已经完成了JSON的解析,得到JToken类型的data
var lat = data.SelectToken("message.location.lat")?.Value<double>();
var lon = data.SelectToken("message.location.lon")?.Value<double>();

这种写法最简洁,适合不需要额外操作中间节点的场景。

方法二:分步获取子节点

如果需要先对location节点做其他操作,可以分步取值:

JToken message = data.SelectToken("message");
JToken location = message.SelectToken("location");
// 先判断节点是否存在,避免空引用异常
if (location != null)
{
    var lat = location.Value<double>("lat");
    var lon = location.Value<double>("lon");
}

额外小技巧:避免默认值误导

要是担心找不到节点时返回的0会误导你,可以用可空类型double?,这样找不到目标值时会返回null,更容易排查问题:

var lat = data.SelectToken("message.location.lat")?.Value<double?>();

内容的提问来源于stack exchange,提问作者Aleksandra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:01:37