【问题标题】:Select type object from json?从json中选择类型对象?
【发布时间】:2021-04-06 09:05:24
【问题描述】:

我对来自 json 查询的正确解析对象有疑问。我读了一些关于 JObject 的东西。现在我有两个模型,例如CarMotorBike。查询结果为:

"Vehicles": 
 [
        {
            "Id": 1,
            "title": "test",
            "price": "4000",
            "type": "Car"
        },
        {
            "Id": 1,
            "title": "test",
            "price": "4000",
            "drivingLicenseCat" "A",
            "type": "MotorBike"
        }
    ]

我如何通过type解析自定义模型

【问题讨论】:

  • 发布的 JSON 只有一种类型:Vehicle 其中 (sub)TypeVehicle 的简单属性
  • 准备你的模型匹配数组中的每个项目,解析这些项​​目的列表。最后过滤所需类型的项目。我认为尝试仅解析某些所需类型的项目没有任何好处。首先解析所有内容并过滤您想要的项目(按类型)。

标签: c# json rest


【解决方案1】:

您对 JSON 有多少控制权?如果您正确地从 web api 生成 JSON,它将更像:

"Vehicles": 
 [
        {
            "Id": 1,
            "title": "test",
            "price": "4000",
            "$type": "YourNamespace.Car, YourNamespace"
        },
        {
            "Id": 1,
            "title": "test",
            "price": "4000",
            "drivingLicenseCat" "A",
            "$type": "YourNamespace.MotorBike, YourNamespace"
        }
    ]

然后你带进去的时候会自动反序列化...

确保在您序列化并作为 JSON 发送的模型中,您将其标记如下:

[JsonProperty(ItemTypeNameHandling = TypeNameHandling.All)]

这将在对象被序列化时将类型名称添加到对象中。我还应该注意,这是使用 Newtonsoft 作为您的 Json 库的。我不确定内置的 Json。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    相关资源
    最近更新 更多