使用 JsonObjectAttribute 设置 ItemTypeNameHandling

本文关键字:ItemTypeNameHandling 设置 JsonObjectAttribute 使用 | 更新日期: 2023-09-27 18:31:07

我试图让 Json.NET 序列化一个对象并包含它的类型,如下所示...

    [JsonObject(ItemTypeNameHandling = TypeNameHandling.All)]
    public class ABC
    {
        public string Easy;
        public string As;
    }

。以下测试...

        ABC abc = new ABC();
        abc.Easy = "123";
        abc.As = "do rey me";
        string output = JsonConvert.SerializeObject(abc);

。输出是...

{"Easy":"123","As":"do rey me"}

。我希望...

{"$type":"MyTest+ABC, MyTest","Easy":"123","As":"do rey me"}

我正在尝试使选定的合同包含 Web API 2 项目中的类型信息。 除了全局设置之外,没有其他方法可以做到这一点吗?这样。。。

config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All

使用 JsonObjectAttribute 设置 ItemTypeNameHandling

我最终使用的解决方案是确保此类类型在数组中序列化。 所以

ABC abc = new ABC();
abc.Easy = "123";
abc.As = "do rey me";
var package = new 
{
   Data = [] { abc }
};
string output = JsonConvert.SerializeObject(abcArray);

生成的 JSON 包含对象的类型

{
   Data = [
       {"$type":"MyTest.ABC, MyTest","Easy":"123","As":"do rey me"}
   ]
}
相关文章:
  • 没有找到相关文章