我在泡菜.我找不到如何反序化这个json.我在网上找到的所有内容都谈到了如何处理键值/值,其中值是类型而不是对象.在这种情况下,值是一个内部具有附加键/值的对象.
另外,你在“领土”之后看到的像长串的长指针是不一样的……
我如何使用JSON.NET反序列化?我希望能够获得ID和名称.
谢谢您阅读此篇
{
"territories":{
"6368e494-c47c-4678-89de-45f3bfc35247":{
"id":"6368e494-c47c-4678-89de-45f3bfc35247",
"name":"Atlanta Camera Operations",
"center":[
33748995,
-84387983
],
"timeZoneCode":"America/New_York",
"languageCode":"en"
},
"4d998d4c-fcc6-4fdc-9e73-3f2e7515ee47":{
"id":"4d998d4c-fcc6-4fdc-9e73-3f2e7515ee47",
"name":"Atlanta Operations",
"center":[
33748995,
-84387983
],
"timeZoneCode":"America/New_York",
"languageCode":"en"
}
}
}
最佳答案 这是一个将保存领土信息的类:
class Territory
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("center")]
public IList<int> Center { get; set; }
[JsonProperty("timeZoneCode")]
public string TimeZoneCode { get; set; }
[JsonProperty("languageCode")]
public string LanguageCode { get; set; }
}
然后你可以像这样逐个反序列化它们:
string myJsonText = "your json here";
var jsonObject = JObject.Parse(myJsonText);
var territoriesToken = jsonObject["territories"];
我们遍历孩子们并反序列化它们:
var territoriesList = new List<Territory>();
foreach (var child in territoriesToken.Children())
{
var territory = child.First.ToObject<Territory>();
territoriesList.Add(territory);
}
或者,如果您更喜欢LINQ one liners,您可以使用:
var territoriesList = territoriesToken.Children()
.Select(child => child.First.ToObject<Territory>())
.ToList();
然后,您可以像使用任何其他C#对象一样访问名称和ID
territoriesList[0].Id
territoriesList[0].Name