【问题标题】:Advice needed to parse this JSON in .NET在 .NET 中解析此 JSON 所需的建议
【发布时间】:2023-01-11 21:03:34
【问题描述】:

鉴于以下 JSON 示例,在 c# .NET 中解析它的最佳方法是什么?

{"data":{"5":{"isDeleted":"false","day":"THU"}},"action":"edit"}
{"data":{"7":{"isDeleted":"false","name":"alex"}},"action":"edit"}
{"data":{"90":{"isDeleted":"true","job":"software"}},"action":"edit"}

我已经研究过将 JSON 序列化为一个对象,但是因为每次我无法将其直接映射到模型时数据都可能不同。

【问题讨论】:

  • 您想做什么,这些领域有何不同?您可以将其反序列化为 JsonDocument 并直接使用 JSON 元素。如果您事先知道可能的字段名称,则可以将它们全部添加为可为空的字段,例如string?bool?。或者您可以使用 Dictionary<string,whatever> 来表示真正动态的项目
  • 了解您正在使用的 JSON 解析库会有所帮助。

标签: c# asp.net json


【解决方案1】:

所以这个模型可以是

public class Record 
{
  public Dictionary<string, Dictionary<string, string>> Data { get; set; }
  public string Action { get; set; }
}

【讨论】:

    【解决方案2】:

    您可以将 JSON 反序列化为 dynamic 对象,这允许您访问 JSON 对象的属性,而无需使用 JsonSerializerSystem.Text.Json 定义特定模型:

    string jsonString = "{"data":{"5":{"isDeleted":"false","day":"THU"}},"action":"edit"}";
    dynamic jObject = JsonSerializer.Deserialize<dynamic>(jsonString);
    string action = jObject .action;
    dynamic data = jObject .data;
    string isDeleted = data["5"].isDeleted;
    string day = data["5"].day;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多