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

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);
}

逻辑说明

  1. 直接通过JArray.FromObject把接口返回的result.Data转成可操作的JSON数组,省去多次序列化、反序列化的冗余开销
  2. 遍历原始数组的每个元素,直接提取VENDOR属性对应的字段对象,拼接成新数组,就是你需要的目标结构
  3. 原有代码中的while循环、ReadMore相关代码全部冗余,如果你不需要分页拉取全量数据,可以直接删除;如果需要拉取全量数据,需要调整逻辑合并多页返回的result.Data再做统一处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:45:02