c# - 为什么我应该在 JSON 反序列化中使用 List<> 而不是数组?

标签 c# arrays json list deserialization

首先让我告诉你一件事,我发布这个问题只是为了渴望和增长我的知识。希望你能解开我的疑惑!

现在进入正题

我从之前的 question-answer 得到了这个问题

实际上问题是如果我使用

List<oodleListings> listings;

代替

oodleListings[] listings;

效果不错!!我可以轻松反序列化我的 json 字符串。

现在的问题是为什么在反序列化 json 时不支持数组?

使用 List 而不是 array 的实际原因是什么?

最佳答案

您的问题与ArrayLists 无关。 请参阅下面的示例类

public class TestClassList
{
    public List<User> users;
}

public class TestClassArray
{
    public User[] users;
}

public class User
{
    public string user;
}

并假设您的输入字符串是 string json1 = "{ users:[{user:'11'},{user:'22'}] }";

var obj1= ser.Deserialize<TestClassList>(json1);
var obj2 = ser.Deserialize<TestClassArray>(json1);

两种反序列化都可以工作..

但是如果你尝试反序列化这个字符串 string json2 = "{ users:{user:'11'} }";

var obj3 = ser.Deserialize<TestClassList>(json2);
var obj4 = ser.Deserialize<TestClassArray>(json2);   //<--ERROR  

你会在第二行得到错误(尽管第一行没有给出错误,它也没有返回一个有效的对象)。

结果:第二个 json 字符串不包含用户数组,这就是为什么您得到 No parameterless constructor defined for type of 'User[]'

关于c# - 为什么我应该在 JSON 反序列化中使用 List<> 而不是数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227465/

相关文章:

c# - 每 X 分钟最大化窗口

c# - 计算负数的幂

c# - 将重复的列表条目合并为一个并在 C# 中显示数量

c# - .NET 应用程序抛出哪些异常

c - 关于C中的数组

java - 如何使用 gson 解析类层次结构?

json - 当根元素是数组时,如何在 Swift 4 中解析 JSON?

javascript - 从 angularjs 中的多个 json 数组动态检索数据

javascript - React 不会重新渲染更新的数组状态

iphone - 如何使用 JSON-Framework 解析 iPhone SDK (XCode) 中的 JSON 对象