【发布时间】:2017-05-11 09:38:05
【问题描述】:
我在使用 JSON.NET 反序列化这个 JSON 字符串时遇到了麻烦(注意引号):
"[]"
根据您访问的 JSON 验证网站,这是有效的 JSON(例如 jsonlint 表示它是有效的)。
JSON.NET 代码:
void Main()
{
string json = "\"[]\"";
var x = JsonConvert.DeserializeObject<User[]>(json);
Console.WriteLine(x);
}
// Define other methods and classes here
public class User
{
public string Id { get; set; }
public int Age { get; set; }
}
例外情况
将值“[]”转换为类型“UserQuery+User[]”时出错。路径 '',第 1 行,第 4 位。
有没有办法强制 JSON.NET 解析这个?
【问题讨论】:
-
没有。
[]是一个有效的 JSON,它是一个空数组。"[]"无效(阅读 this)。即使"[]"可能是一个有效的 JSON,它也会是一个包含“[]”的字符串,而不是一个数组。 -
有效的 json 更像
string json = "[]";但是您可以先将 json 反序列化为字符串,然后将结果反序列化为数组。 =>var x = JsonConvert.DeserializeObject<User[]>(JsonConvert.DeserializeObject<string>(json)); -
这是 JavaScript,在 Chrome 中。与 C# 无关。
-
@ChrisS 和
typeof JSON.parse("\"[]\"")在 Chrome 中返回“字符串”。您的 JSON 可能被浏览器 JSON 解析器认为是有效的,但它是单个字符串,而您尝试将其反序列化为对象数组。 -
而且 JavaScript 不是 C#。没有必要争论它在 JavaScript 中是有效的。