反序列化 Json - 对象的对象
Deserialize Json - Object of objects
我有一些 JSON 寄给我,看起来像这样:
{"MessageCodes": {
"Code1": "Message 1",
"Code2": "Message 2",
"Code3": "Message 3",
"Code4": "Message 4",
"Code5": "Message 5",
"Code6": "Message 6",
}}
这表示有一个名为 MessageCodes
的对象,其中包含许多其他对象(Code1
、Code2
等)。对象名称 Code1
、Code2
、...只是示例对象名称。我收到的 JSON 包含 MessaageCodes
对象中包含的数百个对象。都是名值对。
我正在使用 Newtonsoft 的 JSON.net 反序列化发送给我的 JSON。有谁知道我如何将上述 JSON 反序列化为字典?
使用 Newtonsoft.Json 你可以做下一步:
var jsonString = @"{'MessageCodes': {'Code1': 'Message 1','Code2': 'Message 2','Code3': 'Message 3'}";
var dictionary = JsonConvert.DeserializeObject<JObject>(jsonString)
.GetValue("MessageCodes")
.ToDictionary(x => x.First.Path, x => x.First.Value<string>());
首先,您的JSON格式不正确。如果它代表一个对象,它应该被包裹在外括号中:
var json = @"{'MessageCodes': {
'Code1': 'Message 1',
'Code2': 'Message 2',
'Code3': 'Message 3',
'Code4': 'Message 4',
'Code5': 'Message 5',
'Code6': 'Message 6'}}";
var dict = JsonConvert.DeserializeObject<Test>(json);
public class Test
{
public Dictionary<string, string> MessageCodes { get; set; }
}
我有一些 JSON 寄给我,看起来像这样:
{"MessageCodes": {
"Code1": "Message 1",
"Code2": "Message 2",
"Code3": "Message 3",
"Code4": "Message 4",
"Code5": "Message 5",
"Code6": "Message 6",
}}
这表示有一个名为 MessageCodes
的对象,其中包含许多其他对象(Code1
、Code2
等)。对象名称 Code1
、Code2
、...只是示例对象名称。我收到的 JSON 包含 MessaageCodes
对象中包含的数百个对象。都是名值对。
我正在使用 Newtonsoft 的 JSON.net 反序列化发送给我的 JSON。有谁知道我如何将上述 JSON 反序列化为字典?
使用 Newtonsoft.Json 你可以做下一步:
var jsonString = @"{'MessageCodes': {'Code1': 'Message 1','Code2': 'Message 2','Code3': 'Message 3'}";
var dictionary = JsonConvert.DeserializeObject<JObject>(jsonString)
.GetValue("MessageCodes")
.ToDictionary(x => x.First.Path, x => x.First.Value<string>());
首先,您的JSON格式不正确。如果它代表一个对象,它应该被包裹在外括号中:
var json = @"{'MessageCodes': {
'Code1': 'Message 1',
'Code2': 'Message 2',
'Code3': 'Message 3',
'Code4': 'Message 4',
'Code5': 'Message 5',
'Code6': 'Message 6'}}";
var dict = JsonConvert.DeserializeObject<Test>(json);
public class Test
{
public Dictionary<string, string> MessageCodes { get; set; }
}