我正在使用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属性会告诉反序列化器该做什么?
答案 0 :(得分:0)
您可以将Data
更改为object
或Newtonsoft.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();