从 json.net 中发现输出类
本文关键字:输出 发现 json net | 更新日期: 2023-09-27 18:34:11
我正在做一个项目,我基于反射动态构建一组对象并对其进行序列化(使用 json.net)。
我想做的是反序列化它并重新创建对象树,但我不知道最终的类类型。
那么我怎么知道呢?
下面是一个示例:
public class insideBleah
{
public int BProperty
{ get; set; }
}
public class bleah
{
public int AProperty
{ get; set; }
public insideBleah Inside
{ get; set; }
}
和
var bleah = new bleah();
bleah.AProperty = 1;
bleah.Inside = new insideBleah();
bleah.Inside.BProperty = 2;
var output = JsonConvert.SerializeObject(bleah, new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.Objects
});
这将生成输出字符串:
"{'"$type'":'"jsontest.bleah, jsontest'",'"AProperty'":1,'"Inside'":{'"$type'":'"jsontest.insideBleah, jsontest'",'"BProperty'":2}}"
所以我可以看到那里的班级。 太近了! 但我似乎无法梳理出这些信息。
我该怎么做? 我不能做:
var newObject = (bleah)JsonConvert.DeserializeObject<bleah>(output);
因为我不知道这是"嘘声"。
我该如何处理?
提前致谢
为什么你可以只使用:
using System;
using Newtonsoft.Json;
namespace ConsoleApplication1
{
class Program
{
private static void Main(string[] args)
{
var bleah = new Person();
var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects };
var output = JsonConvert.SerializeObject(bleah, settings);
Console.WriteLine(output);
var deserializeObject = JsonConvert.DeserializeObject(output, settings);
Console.WriteLine(deserializeObject.GetType().Name);
}
}
class Person
{
public string Name { get; set; }
}
}
输出:
{"$type":"ConsoleApplication1.Person, ConsoleApplication1","Name":null}
Person