如何反序列化带有 Newtonsoft.json 的集合?

How to deserialize a collection with a collection with Newtonsoft.json?

我有一些 Json 内容包含一个数组,其中每个项目包含一个 object 数组。我正在寻找一种将其转换为 object 列表的方法。它只是 object 与 id 和 biCode 是我所追求的,他们的 parent 对我来说并不重要 我尝试了 https://json2csharp.com/ 网站,但根据输出,我需要为每个 parent object(“UselessText1”、“UselessText2”等)创建一个 Class,然后他们只包含 id 和 biCode。我尝试使用它,但是(正如我猜到的那样)它没有用

它抛出了这个异常:无法将当前 JSON object(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[Root]',因为该类型需要一个 JSON 数组(例如 [1,2,3])以正确反序列化。

这是json:

{
"UselessText1": [],
"UselessText2": [
    {
        "id": 2,
        "biCode": "Something useful"
    }
],
"UselessText3": [
    {
        "id": 3,
        "biCode": "Something useful"
    },
    {
        "id": 4,
        "biCode": "Something useful"
    }
]}

知道如何反序列化吗?我发现的任何 Google 结果都没有显示像我这样的情况。我可能不知道要搜索什么

试试这个

var json=...your json string

var deseializedJson = JsonConvert.DeserializeObject< Dictionary<string,UselessText[]>>(json);

var output = JsonConvert.SerializeObject(deseializedJson);

   public class UselessText
    {
        public int id { get; set; }
        public string biCode { get; set; }
    }

输出

{"UselessText1":[],
"UselessText2":[{"id":2,"biCode":"Something useful"}],
"UselessText3":[{"id":3,"biCode":"Something useful"},{"id":4,"biCode":"Something useful"}]}

您的 Json 示例有点奇怪。您的对象似乎包含多个相同类型的属性。

对于这个 Json 应该有效的东西是:

public class MyModel{
    public IEnumerable<MyEntity> UselessText1;
    public IEnumerable<MyEntity> UselessText2;
    public IEnumerable<MyEntity> UselessText3;
}

public class MyEntity{
    public int Id;
    public string BiCode;
}