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

反序列化JSON对象数组字符串为字符串数组遇错,如何解决?

解决JSON对象数组反序列化为字符串数组的问题

问题原因

你的响应字符串是JSON对象数组(数组元素是独立的JSON对象),但你试图直接反序列化为String()类型——JSON中的{}代表对象而非字符串,因此解析器会抛出格式不匹配的异常。

解决方案

先将整个响应解析为JSON数组结构,再遍历每个元素,将其重新序列化为JSON字符串,最终得到目标字符串数组。

代码示例

使用Newtonsoft.Json的JArray(来自Newtonsoft.Json.Linq命名空间)处理是最高效的方式:

Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq

' 初始HTTP响应字符串
Dim response As String = "[{"test":"test"}, {"prova":"prova"}, {"test1":"test1"}, {"test2":"test2"}]"

' 1. 解析整个响应为JSON数组
Dim jsonArray As JArray = JArray.Parse(response)

' 2. 将每个JSON对象转换为字符串,生成目标数组
Dim payload As String() = jsonArray.Select(Function(token) token.ToString(Formatting.None)).ToArray()

说明

  • JArray.Parse:正确识别原始字符串的JSON数组结构,解析出每个内部的JSON对象。
  • token.ToString(Formatting.None):将单个JSON对象序列化为紧凑格式的字符串;如果需要带缩进的格式化JSON,可替换为Formatting.Indented。

备选方案(不依赖JArray)

如果不想使用JArray,也可以先反序列化为对象列表,再逐个序列化回字符串:

Imports Newtonsoft.Json

Dim response As String = "[{"test":"test"}, {"prova":"prova"}, {"test1":"test1"}, {"test2":"test2"}]"

' 先反序列化为对象列表
Dim objList As List(Of Object) = JsonConvert.DeserializeObject(Of List(Of Object))(response)

' 逐个序列化为字符串
Dim payload As String() = objList.Select(Function(obj) JsonConvert.SerializeObject(obj, Formatting.None)).ToArray()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:58:18