如何将json数组反序列化为JArray?

问题描述 投票:0回答:1

我有以下 json 结构,由于某种原因我的数据对象没有绑定到我的 poco 上。我使用 jarray 作为数据属性

    {
        "nested": [
            {
                "Id": 1,
                "data": [
                    {
                        "Foo1": "1"
                    }
                ]
            },
            {
                "adotc": 2,
                "data": [
                    {
                        "Foo2": "2"
                    },
                    {
                        "Foo3": "3"
                    }
                ]
            }
        ]
    }

data
属性是一个数组,可以包含动态对象且未知。我现在想将它们存储到 JArray 中。

我的 POCO 是这样的

    public record MyPOCO
    {
        public int Id { get; init; }
        public JArray Data { get; set; }
    }

我想使用

ConfigurationBuilder
绑定我的对象,但由于某种原因,这不适用于绑定。 Id 确实如此,但 Data 对象不为 null,但没有子对象

    public static void Main()
    {
         IConfiguration root = new ConfigurationBuilder()
             .AddJsonFile("~/myfile.json")
             .Build();

         List<MyPOCO> myPOCO = new();
         root.GetSection("nested").Bind(myPOCO);            
    }

尝试绑定对象

c# asp.net json serialization
1个回答
0
投票

怀疑

JArray
类型是否有效,因为
JArray
来自 Newtonsoft.Json 库,.NET 应用程序的默认 JSON 提供程序是 System.Text.Json

因此,您应该使用

List<Dictionary<string, string>>
,它支持反序列化动态键值对的相同行为。

using System.Collections.Generic;

public record MyPOCO
{
    public int Id { get; init; }
    public List<Dictionary<string, string>> Data { get; set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.