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

如何使用JSONPath从JSON中提取拼接后的地址值?

解决JSON数组属性拼接为完整地址列表的问题

问题分析

你当前使用的JSONPath表达式quoteSummary.result..['address1','city']会递归提取所有匹配的单个属性值,因此得到的是扁平的字符串列表,而非按对象分组拼接后的完整地址。Json.NET的JSONPath不支持直接在表达式中进行字符串拼接操作,需要通过LINQ配合节点选择来实现需求。

解决方案

方法一:通过SelectTokens获取对象后拼接

先定位到result数组中的每个对象,再逐个拼接address1和city属性:

var jsonString = @"{ ""quoteSummary"": { ""result"": [ { ""address1"": ""One Apple Park Way"", ""city"": ""Cupertino"" }, { ""address1"": ""Microsoft"", ""city"": ""New York"" } ] } }";
var data = (JObject)JsonConvert.DeserializeObject(jsonString);
// 获取result数组中的所有对象节点
var addressItems = data.SelectTokens("quoteSummary.result[*]");
// 拼接每个对象的address1和city
var fullAddresses = addressItems
    .Select(item => $"{item["address1"]} , {item["city"]}")
    .ToList();

方法二:直接遍历JSON数组节点

更简洁的方式是直接访问result数组,遍历后拼接属性:

var jsonString = @"{ ""quoteSummary"": { ""result"": [ { ""address1"": ""One Apple Park Way"", ""city"": ""Cupertino"" }, { ""address1"": ""Microsoft"", ""city"": ""New York"" } ] } }";
var data = (JObject)JsonConvert.DeserializeObject(jsonString);
var fullAddresses = data["quoteSummary"]["result"]
    .Select(jToken => $"{jToken["address1"]} , {jToken["city"]}")
    .ToList();

注意事项

你提供的原始JSON输入中属性名为address,但代码中使用的是address1,请根据实际JSON结构调整属性名,避免因名称不匹配导致无法获取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:27:16