使用JSON.NET将JSON数组反序列化为字符串数组

5

我正在尝试使用以下代码将JSON数组反序列化为字符串列表:

Newtonsoft.Json.Linq.JArray jsonResponse = JsonConvert.DeserializeObject(result) as Newtonsoft.Json.Linq.JArray;
List<string> response = jsonResponse.ToObject<List<string>>();

JSON的结构如下:

[["不可能导入两个相同服务的数字","不可能导入两个相同代码"]]

但是会抛出以下错误:

读取字符串时发生错误。意外的令牌:StartArray。路径'[0]'。

如何在没有错误的情况下反序列化对象?

2
你的 JSON 为什么以两个 [[ 开头?你是想在数组内部再嵌套一个数组吗? - Claies
这是一个嵌套的、不规则的数组,所以可以使用 var lists = JsonConvert.DeserializeObject<List<List<string>>(result) 进行反序列化。顺便说一下,中间不需要使用 JArray 表示。 - dbc
@Claies 我不知道,我是从 Web 服务接收字符串的,当我把它放在 JSON 查看器里时可以正常工作。 - Brayan Zavala
这是一个字符串列表的列表,因此您需要使用@dbc提到的选项或List<List<string>> response = jsonResponse.ToObject<List<List<string>>>() - Claies
3个回答

4

谢谢!!!

我按照评论中的建议进行了操作,现在一切都正常工作。

我只改变了代码为:

var jsonResponse = JsonConvert.DeserializeObject<List<List<string>>>(result);

获取一个包含多个列表的列表。


1

我曾经花了一些时间在 C# Fiddle 上进行此项工作(我喜欢这种协作方式),而你则将其运行在本地,但我将你的解决方案放入了一个 fiddle 中,以便其他人可以获得完整的能够运行并且可以操作的代码。

https://dotnetfiddle.net/mAU6gi

此外,这凸显了需要包括并在页面上随时提供所需的NuGet软件包!
using Newtonsoft.Json;
using System.Collections.Generic;

这还可以向用户展示如何枚举他们的新嵌套列表,并按照JSON中出现的顺序显示所有值。
谢谢! -App-Devon

1
我会尽力帮助您翻译以下内容,这是关于编程的:

这应该可以工作:

var list = JArray.Parse(@"[[""a"", ""b"", ""c""]]").Values().Select(x => x.Value<string>()).ToList();

希望这有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接