【问题标题】:JSON.Net - How to deserialize JSON to object but treating a property as a string instead of JSON?JSON.Net - 如何将 JSON 反序列化为对象,但将属性视为字符串而不是 JSON?
【发布时间】:2012-03-31 10:08:56
【问题描述】:

我有一些想要反序列化的 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”类型。

有什么想法吗?

干杯

【问题讨论】:

    标签: .net json.net


    【解决方案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 问题的答案。
    猜你喜欢
    • 2013-07-09
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多