.net 使用动态属性解析JSON

u0sqgete  于 2023-01-14  发布在  .NET
关注(0)|答案(1)|浏览(182)

我有以下JSON,我正在使用Newtonsoft.Json从C#服务请求

[
  {"Example1":value1,
  "Example2":value1,
  "Example3":"value1",
  "ExampleList":
    {"Example4":"",
      "Example5":"value1",
      "Example6":"value1",
      "Example7":"",
      "Example8":"value1"},
  "Example9":["value1"],
  "Example10":[]
  }
]

这里的问题是"ExampleList","Example9"和"Example10"。2 "ExampleList"列表没有定义值的数目。3它可以是5,在下一个查询中它可以是20。
我已经有了一个类似的请求,其中只有ExampleList而没有值 上面。我用

Dictionary<string, string>

而且效果很好。
我的问题是,我怎样才能把这两者结合起来?
我试过类似的东西我在这里找到Parsing JSON with dynamic properties

public partial class ExampleClass
{
    public int Example1 { get; set; }
    public long Example2 { get; set; }
    public long Example3 { get; set; }
    public ExampleList exampleList { get; set; }
}

public partial class ExampleList
{
    Dictionary<string, string> exampleList = new Dictionary<string, string>();

}

错误:
JSON序列化异常:无法将当前JSON数组(例如[1,2,3])反序列化为类型"Models. ExampleClass",因为该类型需要JSON对象(例如{" name ":" value "})才能正确反序列化。

    • 编辑:Guru Strons解决方案起作用了。对于示例9和10,我创建了一个数组。**

一个三个三个一个

ovfsdjhp

ovfsdjhp1#

如果目标是只动态地反序列化ExampleList-没有必要为它引入类,只需创建Dictionary<string, string>()类型的属性:

public partial class ExampleClass
{
    public int Example1 { get; set; }
    public long Example2 { get; set; }
    public long Example3 { get; set; }
    public Dictionary<string, string>() ExampleList { get; set; }
}

还有另一个问题--看起来您试图反序列化到ExampleClass,但您的根json是array,因此使用List<ExampleClass>或其他集合类型:

JsonConvert.DeserializeObject<List<ExampleClass>>(...);

相关问题