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

如何用C# Newtonsoft.Json将JObject中嵌套JArray转为指定格式字符串?

问题描述

我使用C#的Newtonsoft.Json库,对JSON格式有一定了解但并非完全精通。现有如下JSON示例数据(已解析为JObject类型):

{ "data" :
  [
    [
      {
        "key1":"value1",
        "key2":"value2"
      },{
        "key1":"value3",
        "key2":"value4"
      }
    ],[
      {
        "key10":"value10"
      }
    ]
  ]
}

我希望将其转换为如下格式的字符串:

[
      {
        "key1":"value1",
        "key2":"value2"
      },{
        "key1":"value3",
        "key2":"value4"
      }
    ],[
      {
        "key10":"value10"
      }
    ]

我尝试了以下代码:

//JObject jobj = /*Sample json*/;
string json = (jobj["data"] as JArray)[0].ToString();

但这段代码仅返回data数组中的第一个子数组,无法得到所有子数组的拼接结果,请问正确的转换方法是什么?

解决方案

你需要直接获取整个data对应的JArray,再对其序列化结果做简单处理,或者遍历子元素拼接,两种方式都能实现需求:

方法一:序列化后去除首尾方括号

JObject jobj = /* 你的JObject实例 */;
JArray dataArray = jobj["data"] as JArray;
// 序列化带缩进格式的完整数组
string fullArrayJson = dataArray.ToString(Formatting.Indented);
// 去掉首尾方括号并清理多余空白
string result = fullArrayJson.TrimStart('[').TrimEnd(']').Trim();

说明

dataArray.ToString(Formatting.Indented)会生成包含首尾方括号的完整数组JSON,通过TrimStart和TrimEnd去除方括号后,就能得到多个子数组用逗号分隔的目标格式。

方法二:遍历子数组拼接字符串

JObject jobj = /* 你的JObject实例 */;
JArray dataArray = jobj["data"] as JArray;
List<string> subArrayStrs = new List<string>();
foreach (JToken subArray in dataArray)
{
    subArrayStrs.Add(subArray.ToString(Formatting.Indented));
}
// 用逗号拼接所有子数组的字符串
string result = string.Join(",", subArrayStrs);

说明

这种方式更灵活,可自定义子数组之间的分隔符,或者对单个子数组的序列化格式做单独调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:01:31