JSON.Net - 如何将JSON反序列化为对象,但将属性视为字符串而不是JSON?

时间:2012-03-31 01:44:04

标签: .net json.net

我有一些我希望反序列化的JSON,但我想将其中一个属性视为字符串,而不是对象。

作为一个例子,JSON看起来像这样:

{
  "name":"Frank",
  "sex":"male",
  "address": {
               "street":"nowhere st",
               "foo":"bar"
             }
}

我想将它反序列化为此对象 - 将地址对象视为字符串文字:

public class Person
{
   public string name;
   public string sex;
   public string address;
}

我尝试将字符串反序列化为此对象,但得到错误:

无法将JSON对象反序列化为“System.String”类型。

有什么想法吗?

干杯

1 个答案:

答案 0 :(得分:2)

最简单的方法是,如果你可以修改你的Person类并为你的Address属性创建一个Address类,如:

public class Person
{
   public string name;
   public string sex;
   public Address address;
}

public class Address
{
   public string street; 
   public string foo;
}

这将让JSON.NET为您反序列化地址对象。

如果你不能修改你的类 - 解决方案需要手动处理Person的反序列化,我相信。