c# - 将 JSON 对象属性反序列化为字符串

标签 c# json serialization json.net

我有一些具有多种属性的 JSON,其中大部分是简单数据类型。但是,我在 JSON 中有一个属性,当我将它反序列化为 C# 类时,我只需要将它反序列化为一个字符串。

示例 JSON:

{"simpleProperty": "value1", "json":{"a":"a1", "b":"b1"}}

“json”对象除了是一个有效的 JSON 对象外没有固定结构。

所以在上面的例子中,“json”的值是一个 JSON 对象——但是当它被反序列化时,我需要它作为一个字符串。

所以如果我的 C# 类是:

public class MyClass
{
    public string SimpleProperty { get; set; }
    public string Json { get; set; }
}

然后如果我使用:

var myClass = JsonConvert.DeserializeObject<MyClass>(jsonStr);

我希望 myClass.Json 只是一个简单的字符串。

我已经研究过为此创建一个自定义 JsonConverter,但对于这么简单的事情来说,这似乎太复杂了。我一定是在这里遗漏了什么。任何方向将不胜感激。

我也看到了这篇文章——但它确实没有回答问题:JSON.Net - How to deserialize JSON to object but treating a property as a string instead of JSON?

最佳答案

您也可以为该属性使用 JToken 类型,以指示任何有效的 JSON 都可以到达那里。虽然这不完全符合您的要求,但可能就足够了。

public class MyClass
{
    public string SimpleProperty { get; set; }
    public JToken Json { get; set; }
}

然后执行 myClass.Json.ToString() 将以 string 的形式为您提供 JSON。

关于c# - 将 JSON 对象属性反序列化为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29980580/

相关文章:

c# - 以特定格式将对象序列化为 XML

c# - 从 MS Access 数据库获取 Long 后使用 OleDbDataReader.GetInt64() 时出现 System.InvalidCastException

C# 相互添加类

php - PHP 的 json_parse 的内存耗尽错误

C# 将大数组序列化到磁盘

c++ - 二维 vector 未正确保存和加载 boost::serialize 库

c# - c++\cli 项目依赖的 c++ dll 未复制到 c# 输出目录

c# - 通过服务在服务器上编辑 XML

mysql - 如何通过 HttpClient 在 POST 请求中将 JSON 数据作为正文发送

javascript - 如何将值从 JSON 对象移动到 JS 数组