gpt4 book ai didi

c# - 将 JSON 字符串解析为 List

转载 作者:太空狗 更新时间:2023-10-29 19:53:38 30 4
gpt4 key购买 nike

string json = "{\"People\":[{\"FirstName\":\"Hans\",\"LastName\":\"Olo\"}
{\"FirstName\":\"Jimmy\",\"LastName\":\"Crackedcorn\"}]}";

var obj = JObject.Parse(json);

List<string> first;
List<string> last;

foreach (var child in obj["People"].Children())
{
var name = child.First()["countryName"].ToString();
var two = child.First()["countryCode"].ToString();
var three = child.First()["isoAlpha3"].ToString();

countries.Add(name);
twoCharCodes.Add(two);
threeCharCodes.Add(three);

Console.Write("Name:\t\t{0}\n2CharCode:\t{1}\n3CharCode:\t{2}\n\n", name, two, three);
}

我正在寻找一种方法将每个 FirstName 值添加到第一个列表中,并将 LastName 值和最后一个列表相同。执行此操作的最佳方法是什么?

上面的代码中断于:

var name = child.First()["countryName"].ToString();

出现此错误:

 Cannot access child value on Newtonsoft.Json.Linq.JProperty

有什么建议吗?

最佳答案

这似乎是一种糟糕的方法(创建两个相关列表),但我假设您有自己的理由。

我会将 JSON 字符串(在您的示例中有一个拼写错误,它在两个对象之间缺少一个逗号)解析为一个强类型对象,然后使用几个 LINQ 查询来获取这两个列表。

void Main()
{
string json = "{\"People\":[{\"FirstName\":\"Hans\",\"LastName\":\"Olo\"},{\"FirstName\":\"Jimmy\",\"LastName\":\"Crackedcorn\"}]}";

var result = JsonConvert.DeserializeObject<RootObject>(json);

var firstNames = result.People.Select (p => p.FirstName).ToList();
var lastNames = result.People.Select (p => p.LastName).ToList();
}

public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

public class RootObject
{
public List<Person> People { get; set; }
}

关于c# - 将 JSON 字符串解析为 List<string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32273617/

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