将数组的json数组反序列化为C#中的字符串列表
Deserialize json array of array to List of string in C#
我想知道如何将 json 数组 json 数组 转换(反序列化)为 字符串列表.
这意味着内部数组应该被转换成字符串
json 是:
[
[
"a",
"b",
"c",
null,
1
],
[
"d",
"e",
null,
2
]
]
使用内置 C# json 解串器的 C# 代码是:
List<string> myList = System.Text.Json.JsonSerializer.Deserialize<List<string>>(json);
发生此异常:
和牛顿软件:
List<string> myList = JsonConvert.DeserializeObject<List<string>>(json);
在无法使用 dotnetcore 3.1 和 Newtonsoft 中的内置反序列化器反序列化 this json(即 google 翻译 api 响应)后,我决定手动将其转换为类 和字符串,但我的代码不起作用。
结果应该是这样的:
列表:
项目 1:
[
"a",
"b",
"c",
null,
1
]
项目 2:
[
"d",
"e",
null,
2
]
有没有办法将我在link中提到的json反序列化为类? (Visual Studio 特殊粘贴无效)
为什么我无法将 json 数组的 json 数组转换为字符串列表?
这个问题与this issue有关吗?
您的集合中不仅有字符串,还有嵌套数组,因此 List<string>
不代表您的 JSON 结构。如果你只想得到字符串,你可以做这样的事情(这个是 Newtonsoft,在修复 d
值之后):
var strings = JsonConvert.DeserializeObject<List<List<object>>>(json)
.Select(arr => arr.OfType<string>().ToList())
.ToList();
或者如果要将所有值转换为字符串,则在 Select
中使用 arr => arr.Select(a => a?.ToString()
。
或者您可以使用 Newtonsoft 转换为 List<JArray>
并在其上调用 ToString
:
List<string> strings = JsonConvert.DeserializeObject<List<JArray>>(json)
.Select(jarr => jarr.ToString(Newtonsoft.Json.Formatting.None))
.ToList();
Console.WriteLine(string.Join(", ", strings)); // prints "["a","b","c",null,1], ["d","e",null,2]"
我想知道如何将 json 数组 json 数组 转换(反序列化)为 字符串列表.
这意味着内部数组应该被转换成字符串
json 是:
[
[
"a",
"b",
"c",
null,
1
],
[
"d",
"e",
null,
2
]
]
使用内置 C# json 解串器的 C# 代码是:
List<string> myList = System.Text.Json.JsonSerializer.Deserialize<List<string>>(json);
发生此异常:
和牛顿软件:
List<string> myList = JsonConvert.DeserializeObject<List<string>>(json);
在无法使用 dotnetcore 3.1 和 Newtonsoft 中的内置反序列化器反序列化 this json(即 google 翻译 api 响应)后,我决定手动将其转换为类 和字符串,但我的代码不起作用。
结果应该是这样的:
列表:
项目 1:
[
"a",
"b",
"c",
null,
1
]
项目 2:
[
"d",
"e",
null,
2
]
有没有办法将我在link中提到的json反序列化为类? (Visual Studio 特殊粘贴无效)
为什么我无法将 json 数组的 json 数组转换为字符串列表?
这个问题与this issue有关吗?
您的集合中不仅有字符串,还有嵌套数组,因此 List<string>
不代表您的 JSON 结构。如果你只想得到字符串,你可以做这样的事情(这个是 Newtonsoft,在修复 d
值之后):
var strings = JsonConvert.DeserializeObject<List<List<object>>>(json)
.Select(arr => arr.OfType<string>().ToList())
.ToList();
或者如果要将所有值转换为字符串,则在 Select
中使用 arr => arr.Select(a => a?.ToString()
。
或者您可以使用 Newtonsoft 转换为 List<JArray>
并在其上调用 ToString
:
List<string> strings = JsonConvert.DeserializeObject<List<JArray>>(json)
.Select(jarr => jarr.ToString(Newtonsoft.Json.Formatting.None))
.ToList();
Console.WriteLine(string.Join(", ", strings)); // prints "["a","b","c",null,1], ["d","e",null,2]"