假设我想将一组Json数据反序列化为Person对象.
class Person
{
[DataMember]
string name;
[DataMember]
int age;
[DataMember]
int height;
object unused;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我有如下所示的Json数据:
{
"name":"Chris",
"age":100,
"birthplace":"UK",
"height":170,
"birthdate":"08/08/1913",
}
Run Code Online (Sandbox Code Playgroud)
"birthdate"和"birthplace"字段不属于Person类.但是我仍然希望保留这些字段,那么是否可以使用Json.net或其他可以将这些额外字段存储到Person字段之一的库,如上面声明的"未使用"?
您应该可以使用[JsonExtensionData]属性:http://james.newtonking.com/archive/2013/05/08/json-net-5-0-release-5-defaultsettings-and-extension- 数据
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;
}
Run Code Online (Sandbox Code Playgroud)