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

C#如何将包含JSON数组的字符串拆解为独立JSON字符串组成的数组

C# JSON数组字符串拆解为独立JSON字符串数组解决方案

报错原因

你调用JsonConvert.DeserializeObject()时未指定反序列化的目标类型,JSON字符串最外层为数组标识[,反序列化器无法匹配默认解析规则,因此抛出Unexpected character encountered while parsing value: [错误。

实现方案

推荐使用你当前引入的Newtonsoft.Json(Json.NET)库实现,步骤最简:

步骤1:引入命名空间

using Newtonsoft.Json.Linq;
using Newtonsoft.Json;

步骤2:核心实现代码

// 原始待处理JSON数组字符串
string rawJson = "[{\"id\": 111, \"value\": 22, \"timestamp\": \"2021-09-20T02:34:17.000Z\"},{\"id\": 112, \"value_1\": 23, \"value_2\": 24, \"timestamp\": \"2021-09-20T02:33:17.000Z\"}]";

// 解析为JSON数组对象
JArray jsonArray = JArray.Parse(rawJson);

// 遍历每个元素,转换为独立JSON字符串,得到最终结果
IEnumerable<string> messages = jsonArray.Select(item => 
    // 若需要单引号格式可追加.Replace("\"", "'"),注意单引号为非标准JSON格式
    item.ToString(Formatting.None)
).AsEnumerable();

输出说明

  • 默认输出为标准双引号格式的压缩JSON字符串,符合通用JSON规范
  • 若需和你示例中一致的单引号格式,可在ToString()后追加.Replace("\"", "'")
  • 若需要带缩进的格式化JSON,把Formatting.None修改为Formatting.Indented即可

补充:.NET自带System.Text.Json实现

如果你不想引用第三方库,可使用.NET Core 3.0+自带的System.Text.Json库实现:

using System.Text.Json;
using System.Text.Json.Nodes;

string rawJson = "[{\"id\": 111, \"value\": 22, \"timestamp\": \"2021-09-20T02:34:17.000Z\"},{\"id\": 112, \"value_1\": 23, \"value_2\": 24, \"timestamp\": \"2021-09-20T02:33:17.000Z\"}]";

JsonArray jsonArray = JsonNode.Parse(rawJson).AsArray();
IEnumerable<string> messages = jsonArray.Select(item => 
    item.ToJsonString(new JsonSerializerOptions { WriteIndented = false })
).AsEnumerable();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:24:05