gpt4 book ai didi

c# - JSON.NET TypeNameHandling.Auto 除了顶级

转载 作者:太空狗 更新时间:2023-10-30 00:50:09 27 4
gpt4 key购买 nike

<分区>

给定以下代码段:

using System;
using Newtonsoft.Json;

namespace JsonTestje
{
class Other
{
public string Message2 { get; set; }
}

class Demo
{
public string Message { get; set; }
public Other Other { get; set; }
}

class Program
{
static void Main(string[] args)
{
var demo = new Demo
{
Message = "Hello, World!",
Other = new Other
{
Message2 = "Here be dragons!"
}
};

var settings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
Formatting = Formatting.Indented
};
var serialized = JsonConvert.SerializeObject(demo, settings);
Console.WriteLine(serialized);
}
}
}

输出是这样的:

{
"Message": "Hello, World!",
"Other": {
"Message2": "Here be dragons!"
}
}

现在,如果我将 TypeNameHandling 更改为 TypeNameHandling.All,输出将变为:

{
"$type": "JsonTestje.Demo, JsonTestje",
"Message": "Hello, World!",
"Other": {
"$type": "JsonTestje.Other, JsonTestje",
"Message2": "Here be dragons!"
}
}

但我想要的是:

{
"$type": "JsonTestje.Demo, JsonTestje",
"Message": "Hello, World!",
"Other": {
"Message2": "Here be dragons!"
}
}

原因是我希望能够序列化一堆对象并在以后反序列化它们,而不知道它们反序列化到的类型,但我也不想用这些 $type 污染内容 属性遍及不需要的地方。

换句话说,我想要 TypeNameHandling.Auto 除了根对象。我该怎么做?

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