gpt4 book ai didi

c# - JSon.Net 如何让 $type 只用于反序列化

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:21 25 4
gpt4 key购买 nike

我使用 Json 中的 $type 属性对继承的对象进行反序列化(以选择在运行时反序列化的正确对象类型)

我这样做使用:

config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings{ TypeNameHandling = TypeNameHandling.Objects} 

这一行在 WebApiConfig 文件中。

它工作正常,但我无法弄清楚如何将 $type 限制为仅实际需要它的网络服务(我只需要它用于一个 PUT 和一个 POST)。$type 弄乱了其他 web 服务的 API 结果,我找不到一些 TypeNameHandling 配置或一些序列化选项来避免这种情况。有谁知道该怎么做?干杯!

最佳答案

要在嵌套对象上启用类型名称处理,您可以附加 [JsonProperty(ItemTypeNameHandling = TypeNameHandling.Objects)]到包含属性,像这样:

public class RootObject
{
[JsonProperty(ItemTypeNameHandling = TypeNameHandling.Objects)]
public object Data { get; set; }
}

没有内置方法可以对特定类型启用类型名称处理,因此也没有内置方法可以对根对象启用类型名称处理。相反,您可以使用 SignalR Typenamehandling 中的 EnableJsonTypeNameHandlingConverter如果您需要这样做。

关于c# - JSon.Net 如何让 $type 只用于反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33694671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com