C# 如何删除JSON输出中的vendor头部及外层括号以映射SQL表
解决方案
问题排查
你修改后返回空数组的核心原因是两点:
- JSON路径匹配方式不稳定,没有正确提取到
VENDOR节点 - 原有代码存在大量冗余逻辑,
ReadMore分页相关代码完全没有被实际使用,首次进入循环就直接返回结果
修正后完整代码
using Newtonsoft.Json; using Newtonsoft.Json.Linq; public static string Run(ILogger logger) { OnlineClient client = Bootstrap.Client(logger); ReadByQuery query = new ReadByQuery() { ObjectName = "VENDOR", PageSize = 600, Fields = { "RECORDNO", "VENDORID", "NAME" } }; logger.LogInformation("Executing query to Intacct API"); Task<OnlineResponse> task = client.Execute(query); task.Wait(); OnlineResponse response = task.Result; Result result = response.Results[0]; LogManager.Flush(); // 核心处理逻辑:提取VENDOR内部字段 JArray rawData = JArray.FromObject(result.Data); JArray targetData = new JArray(rawData.Select(item => item["VENDOR"])); return targetData.ToString(Formatting.Indented); }
逻辑说明
- 直接通过
JArray.FromObject把接口返回的result.Data转成可操作的JSON数组,省去多次序列化、反序列化的冗余开销 - 遍历原始数组的每个元素,直接提取
VENDOR属性对应的字段对象,拼接成新数组,就是你需要的目标结构 - 原有代码中的
while循环、ReadMore相关代码全部冗余,如果你不需要分页拉取全量数据,可以直接删除;如果需要拉取全量数据,需要调整逻辑合并多页返回的result.Data再做统一处理
内容的提问来源于stack exchange,提问作者Java
相关产品推荐
相关产品推荐

