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

4

我有一些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个回答

1

最简单的方法是如果您可以修改您的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 的反序列化。


虽然这是解决特定示例的方法。但如果返回的属性不同呢?而且你不知道所有可能的属性?那么人们仍然希望得到一个字符串。从技术上讲,这并不是对OP问题的答案。 - Mike de Klerk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接