如何将嵌套的JSON保留为字符串

时间:2017-09-07 23:14:52

标签: c# json

我正在使用Refit调用REST服务,它正在反序列化使用我提供的类定义返回的JSON。返回的对象的一个​​属性是JSON,所以我实际上有嵌套的JSON。

我想将嵌套属性反序列化为字符串,因为我事先并不知道它是什么类型。

这是JSON

{
    "Id": "f90b443d-300c-4e6d-a488-eb4bbf62889e",
    "Type": "e9ccd222-c252-4846-bf16-5936820a3177",
    "SharedName": null,
    "Cache": 1,
    "Data": {
        "Description": "Central Coast"
    }
},
{
    "Id": "f863581b-67e2-49e0-83c9-ab5820715f4f",
    "Type": "7d1c81bd-0b94-4b88-998b-14a8fb9dbbfd",
    "SharedName": null,
    "Cache": 1,
    "Data": {
        "Name": "Emergency Department (ED) Report"
    }
}

这是我的班级定义

public class EntityDetails
{
    public string Id { get; set; }
    public string Type { get; set; }
    public string SharedName { get; set; }
    public int Cache { get; set; }
    public string Data { get; set; }
}

但是我收到了这个错误:

  

"读取字符串时出错。意外的令牌:StartObject。路径' [0] .Data',   第7行,第14位。"

是否有一个JSON属性会告诉反序列化器该做什么?

1 个答案:

答案 0 :(得分:0)

您可以将Data更改为objectNewtonsoft.Json.Linq.JObject。 然后ToString它。

public class EntityDetails
{
    (...)
    public Newtonsoft.Json.Linq.JObject Data { get; set; }
}

(...)
var x = JsonConvert.DeserializeObject<EntityDetails>(jsonString);
var dataAsString = x?.Data?.ToString();