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

C#解析嵌套JSON数组取值问题求助

解决JSON解析失败的问题

嘿,我完全懂花几小时折腾JSON却连解析都过不了的崩溃感!先帮你梳理下问题,再给你可行的解决方案:

先看你提供的JSON核心问题

你贴的这段JSON是截断不完整的,比如"tvdb"...这里没写完,最后也没有闭合的}和],这直接导致解析器无法识别完整结构,肯定会失败。我先帮你补全成一段有效的JSON(根据常见的Trakt API返回格式补全了缺失的内容):

[
  {
    "first_aired": "2018-03-03T01:00:00.000Z",
    "episode": {
      "season": 3,
      "number": 13,
      "title": "Warning Shot",
      "ids": {
        "trakt": 2814272,
        "tvdb": 6445735,
        "imdb": "tt7462514",
        "tmdb": 1429184,
        "tvrage": 0
      }
    },
    "show": {
      "title": "Blindspot",
      "year": 2015,
      "ids": {
        "trakt": 98980,
        "slug": "blindspot",
        "tvdb": 281662,
        "imdb": "tt4532368",
        "tmdb": 60735,
        "tvrage": 35385
      }
    }
  }
]

接下来是解析和取值的示例

我给你写了两种常用语言的解析代码,你可以直接参考:

Python 解析示例

import json

# 把修复后的JSON字符串(或者你获取到的完整JSON)放进这里
json_content = '''
[
  {
    "first_aired": "2018-03-03T01:00:00.000Z",
    "episode": {
      "season": 3,
      "number": 13,
      "title": "Warning Shot",
      "ids": {
        "trakt": 2814272,
        "tvdb": 6445735,
        "imdb": "tt7462514",
        "tmdb": 1429184,
        "tvrage": 0
      }
    },
    "show": {
      "title": "Blindspot",
      "year": 2015,
      "ids": {
        "trakt": 98980,
        "slug": "blindspot",
        "tvdb": 281662,
        "imdb": "tt4532368",
        "tmdb": 60735,
        "tvrage": 35385
      }
    }
  }
]
'''

try:
    # 解析JSON成Python字典
    parsed_data = json.loads(json_content)
    # 示例取值:获取剧集标题
    episode_title = parsed_data[0]["episode"]["title"]
    print(f"拿到剧集标题啦:{episode_title}")
    # 示例取值:获取剧集的Trakt ID
    show_trakt_id = parsed_data[0]["show"]["ids"]["trakt"]
    print(f"剧集的Trakt ID:{show_trakt_id}")
except json.JSONDecodeError as e:
    print(f"解析出错啦,原因是:{e}")

JavaScript 解析示例

// 完整的JSON字符串
const jsonContent = `
[
  {
    "first_aired": "2018-03-03T01:00:00.000Z",
    "episode": {
      "season": 3,
      "number": 13,
      "title": "Warning Shot",
      "ids": {
        "trakt": 2814272,
        "tvdb": 6445735,
        "imdb": "tt7462514",
        "tmdb": 1429184,
        "tvrage": 0
      }
    },
    "show": {
      "title": "Blindspot",
      "year": 2015,
      "ids": {
        "trakt": 98980,
        "slug": "blindspot",
        "tvdb": 281662,
        "imdb": "tt4532368",
        "tmdb": 60735,
        "tvrage": 35385
      }
    }
  }
]
`;

try {
  // 解析JSON成JS对象
  const parsedData = JSON.parse(jsonContent);
  // 示例取值:获取播出时间
  const firstAired = parsedData[0].first_aired;
  console.log(`剧集首播时间:${firstAired}`);
  // 示例取值:获取集数
  const episodeNumber = parsedData[0].episode.number;
  console.log(`这是第${episodeNumber}集`);
} catch (error) {
  console.error(`解析失败:${error.message}`);
}

后续排查小技巧

  • 先确认JSON完整性:如果是从接口获取的,检查请求是否返回了完整内容;如果是本地文件,看看文件有没有被截断。
  • 利用解析错误提示:不管用什么语言,解析失败时都会给出错误位置和原因,比如“第X行第Y列缺少引号”,跟着提示找问题就行。
  • 先校验JSON结构:如果不确定JSON是否有效,可以手动检查引号、括号是否配对,确保没有多余或缺失的逗号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:08:00