反序列化 C# 中的列表列表
Deserialize list of lists in C#
我收到来自 API
的以下回复
[[{\"message\":\"example message\"}]]
我尝试将其反序列化为列表列表,如下所示
public class ErrorMessage
{
[JsonProperty("message")]
public string Message;
}
public class ErrorMessages
{
public List<ErrorMessage> Messages;
}
public class ErrorMessagesList
{
public List<ErrorMessages> MessagesList;
}
反序列化失败,如何反序列化?
你用的是什么解串器?您在 JSON.
中缺少消息或消息列表 属性
{"Messages":[[{"message":"example message"}]]}
可以反序列化为:
public class ErrorMessage
{
[JsonProperty("message")]
public string Message;
}
public class ErrorMessages
{
public List<List<ErrorMessage>> Messages;
}
这段代码对我有用:
var someJson = "[[{\"message\":\"example message\"}]]";
var result = JsonConvert.DeserializeObject<List<List<ErrorMessage>>>(someJson);
Debug.Assert(result.First().First().Message == "example message");
您拥有 ErrorMessage
class 实例的集合。在代码中,我反序列化成一个List of ErrorMessage的List。所以结果中的第一项是 ErrorMessage 列表。该列表中的第一项是 ErrorMessage,该对象的 Message
属性 是 "example message"
.
如果您的 JSON 看起来像这样,它仍会使用 DeserializeObject
调用进行反序列化,但您正在查看的内容会更明显:
var moreJson = @"[
[
{""message"": ""First message""},
{""message"": ""Second message""},
{""message"": ""Third message""}
],
[
{""message"": ""Fourth message""},
{""message"": ""Fifth message""}
]
]";
ErrorMessage的List列表在这段代码中比较明显。但是,这两个示例中的类型相同
我收到来自 API
的以下回复[[{\"message\":\"example message\"}]]
我尝试将其反序列化为列表列表,如下所示
public class ErrorMessage
{
[JsonProperty("message")]
public string Message;
}
public class ErrorMessages
{
public List<ErrorMessage> Messages;
}
public class ErrorMessagesList
{
public List<ErrorMessages> MessagesList;
}
反序列化失败,如何反序列化?
你用的是什么解串器?您在 JSON.
中缺少消息或消息列表 属性{"Messages":[[{"message":"example message"}]]}
可以反序列化为:
public class ErrorMessage
{
[JsonProperty("message")]
public string Message;
}
public class ErrorMessages
{
public List<List<ErrorMessage>> Messages;
}
这段代码对我有用:
var someJson = "[[{\"message\":\"example message\"}]]";
var result = JsonConvert.DeserializeObject<List<List<ErrorMessage>>>(someJson);
Debug.Assert(result.First().First().Message == "example message");
您拥有 ErrorMessage
class 实例的集合。在代码中,我反序列化成一个List of ErrorMessage的List。所以结果中的第一项是 ErrorMessage 列表。该列表中的第一项是 ErrorMessage,该对象的 Message
属性 是 "example message"
.
如果您的 JSON 看起来像这样,它仍会使用 DeserializeObject
调用进行反序列化,但您正在查看的内容会更明显:
var moreJson = @"[
[
{""message"": ""First message""},
{""message"": ""Second message""},
{""message"": ""Third message""}
],
[
{""message"": ""Fourth message""},
{""message"": ""Fifth message""}
]
]";
ErrorMessage的List列表在这段代码中比较明显。但是,这两个示例中的类型相同