【发布时间】:2017-09-08 07:33:44
【问题描述】:
我正在使用 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.Path '[0].Data', 第 7 行,第 14 位。”
是否有一个 JSON 属性可以告诉反序列化器做什么?
【问题讨论】:
-
我想将嵌套属性反序列化为字符串 -- 究竟如何你想反序列化它?它总是一个具有单个
"Name"属性的对象,还是可以是任何东西? -
它可以是任何东西,也可以为空。您可以在上面看到第一项具有 Description 属性,第二项具有 Name 属性。
-
好的,那么你想要的字符串是什么?原始 JSON?在这种情况下,您可以考虑使用来自How can I serialize and deserialize a type with a string member that contains “raw” JSON, without escaping the JSON in the process 的
RawConverter。 (从错误消息来看,您似乎正在使用 Json.NET 反序列化您的 JSON,这就是我链接到该答案的原因。) -
我正在使用 Newtonsoft.Json 但原始转换器可以正常工作,谢谢。请把它写成答案,我会标记为正确的,
-
酷就行。感谢您的及时帮助。