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

使用C#+SSIS从API提取JSON到SQL表时遇JProperty错误

问题排查与解决

错误原因

你遇到的错误是遍历层级错误导致的:

  • data = dynJson.transactionsList 对应JSON里的交易对象数组,data[0]是数组中的第一个交易对象(JObject类型)。
  • 遍历JObject时,迭代返回的是对象的单个属性(JProperty类型,比如"transaction""transactionType"这类键),而非完整的交易对象,因此调用item.transaction会提示JProperty没有该定义。

修正步骤

1. 调整遍历逻辑

直接遍历data数组(而非data[0]),因为data本身就是交易对象的集合:

var data = dynJson.transactionsList;

if (ResponseCode == "0")
{
    // 遍历data数组,每个item是完整的交易对象
    foreach (var item in data)
    {
        OutputBuffer.AddRow();
        OutputBuffer.transaction = Convert.ToString(item["transaction"]);
        OutputBuffer.transactionType = Convert.ToString(item["transactionType"]);
        // 注意:你的JSON中无amount字段,若API未返回该字段请注释/删除此行
        // OutputBuffer.amount = Convert.ToString(item["amount"]);
        // JSON里日期键是大写的Date,需匹配大小写
        OutputBuffer.date = Convert.ToString(item["Date"]);
    }

    offset = offset + 100;
}

2. 修正JSON格式(若为书写失误)

你给出的data = {[...]}是无效JSON结构,对应代码里的dynJson.transactionsList,正确格式应为:

{
  "transactionsList": [
    {
      "transaction": "54226",
      "transactionType": "Purchase",
      "Date": "2023-02-01 00:19:50.0",
      "status": "Active"
    },
    {
      "transaction": "232130962",
      "transactionType": "Purchase",
      "Date": "2023-01-25 00:00:00.0",
      "status": "Active"
    },
    {
      "transaction": "32154299",
      "transactionType": "Purchase",
      "Date": "2023-02-01 01:31:05.0",
      "status": "Active"
    }
  ]
}

3. 字段匹配注意事项

  • JSON键名大小写敏感:原代码里的item.date对应JSON的Date(大写D),需统一为item["Date"]或item.Date。
  • 若API确实不返回amount字段,需删除或注释对应的赋值代码,避免空值或额外报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:10:36