gpt4 book ai didi

c# - 使用 Json.net 反序列化时处理额外成员

转载 作者:太空狗 更新时间:2023-10-29 20:20:24 25 4
gpt4 key购买 nike

假设我想将一组 Json 数据反序列化为一个 Person 对象。

class Person
{
[DataMember]
string name;
[DataMember]
int age;
[DataMember]
int height;

object unused;
}

但是如果我有像下面这样的 Json 数据:

{
"name":"Chris",
"age":100,
"birthplace":"UK",
"height":170,
"birthdate":"08/08/1913",
}

字段“birthdate”和“birthplace”不是 Person 类的一部分。但我仍然想保留这些字段,那么是否可以使用 Json.net 或其他库将这些额外字段存储到 Person 的字段之一,例如上面声明的“未使用”?

最佳答案

您应该能够为此使用 [JsonExtensionData] 属性:http://james.newtonking.com/archive/2013/05/08/json-net-5-0-release-5-defaultsettings-and-extension-data

void Main()
{
var str = "{\r\n \"name\":\"Chris\",\r\n \"age\":100,\r\n \"birthplace\":\"UK\",\r\n \"height\":170," +
"\r\n \"birthdate\":\"08/08/1913\",\r\n}";
var person = JsonConvert.DeserializeObject<Person>(str);
Console.WriteLine(person.name);
Console.WriteLine(person.other["birthplace"]);
}

class Person
{
public string name;
public int age;
public int height;
[JsonExtensionData]
public IDictionary<string, object> other;
}

关于c# - 使用 Json.net 反序列化时处理额外成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25395765/

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