gpt4 book ai didi

c# - 如何使用对象的值反序列化对象

转载 作者:行者123 更新时间:2023-11-30 12:23:21 25 4
gpt4 key购买 nike

我在泡菜。我找不到如何反序列化这个 json。我在网上找到的所有内容都在讨论如何处理值是类型而不是对象的键/值。在这种情况下,该值是一个对象,其中包含额外的键/值。

此外,您在“领土”之后看到的类似字符串的长 guid 永远不会相同......

我如何使用 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 liner,您可以使用它:

var territoriesList = territoriesToken.Children()
.Select(child => child.First.ToObject<Territory>())
.ToList();

然后您可以像访问任何其他 C# 对象一样访问名称和 ID

territoriesList[0].Id
territoriesList[0].Name

关于c# - 如何使用对象的值反序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37323577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com