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

标签 .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”类型。

有任何想法吗?

干杯

最佳答案

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

关于.net - JSON.Net - 如何将 JSON 反序列化为对象但将属性视为字符串而不是 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952302/

相关文章:

c# - SerializeObject 抛出 System.OutOfMemoryException

c# - HashSet.Contains 和自定义 IEqualityComparer 的意外结果

c# - 带有 MonoDevelop 和 C# 的 twitter API

c# - JObject to dynamic 在 Newtonsoft.Json 9.0 中不起作用

c# - .Net 控制台应用程序中的用户 secret 问题

c# - 一次强制执行一个异步可观察对象

c# - 如何在 TabControl 中设置新 TabPage 页面的属性?

c# - DateTime.TryParse 无法解析 DateTime.MinValue

c# - 如何使用 Socket 接收 HTTP 消息

c# - 使用 .Net HttpListener 的多线程