c# - 将 JSON 对象反序列化为 C# 列表

标签 c# json list json.net deserialization

我正在尝试使用 tutorial by Bill Reiss 在 C# 中反序列化给定的 JSON 文件.对于非列表中的 XML 数据,此方法效果很好,但我想反序列化具有以下结构的 JSON 文件:

public class Data
{
    public string Att1 { get; set; }
    public string Att2 { get; set; }
    public string Att3 { get; set; }
    public string Att4 { get; set; }
}

public class RootObject
{

public List<Data> Listname { get; set; }
}

我的问题是使用 JSON.Net 的功能创建/将数据放入列表,然后在 XAML 页面上显示列表。到目前为止我的想法(这是行不通的):

var resp = await client.DoRequestJsonAsync<DATACLASS>("URL");
string t = resp.ToString();
var _result = Newtonsoft.Json.JsonConvert.DeserializeObject<List<DATACLASS>>(t);
XAMLELEMENT.ItemsSource = _result;

最佳答案

所以我认为您可能正在尝试反序列化为错误的类型。如果您将它序列化为 RootObject 并尝试反序列化为 List,它将失败。

查看示例代码

public void TestMethod1()
    {
        var items = new List<Item>
                        {
                            new Item { Att1 = "ABC", Att2 = "123" }, 
                            new Item { Att1 = "EFG", Att2 = "456" }, 
                            new Item { Att1 = "HIJ", Att2 = "789" }
                        };
        var root = new Root() { Items = items };
        var itemsSerialized = JsonConvert.SerializeObject(items);
        var rootSerialized = JsonConvert.SerializeObject(root);

        //This works
        var deserializedItemsFromItems = JsonConvert.DeserializeObject<List<Item>>(itemsSerialized); 

        //This works
        var deserializedRootFromRoot = JsonConvert.DeserializeObject<Root>(rootSerialized); 

        //This will fail.  YOu serialized it as root and tried to deserialize as List<Item>
        var deserializedItemsFromRoot = JsonConvert.DeserializeObject<List<Item>>(rootSerialized);

        //This will fail also for the same reason 
        var deserializedRootFromItems = JsonConvert.DeserializeObject<Root>(itemsSerialized);
    }

class Root
{
    public IEnumerable<Item> Items { get; set; } 
}

class Item
{
    public string Att1 { get; set; }
    public string Att2 { get; set; }
}

编辑:添加了完整的代码。

关于c# - 将 JSON 对象反序列化为 C# 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16019729/

相关文章:

r - R中多个列表的元素均值

c# - 单线程单元与多线程单元

c# - 使用 TestServer 在 AspNetCore 中的集成测试中模拟和解决 Autofac 依赖性

c# - SaveChanges() 正在保存 Unchanged 记录

json - 如何从 R 编写一个具有经纬度序列的 json 数组?

python - 初学者 python 。为每个键存储不同数量的元素的最佳方法?

c# - 如果多个应用程序实例正在运行,如何获取应用程序的事件/前台实例?

java - 如何使用java API将JSON插入cassandra数据库?

javascript - D3 热图 - 色标仅显示一种颜色

python - 对于字典,将键和值与列表中的值进行比较