gpt4 book ai didi

c# - 将 json 字符串反序列化为 .NET 对象列表

转载 作者:行者123 更新时间:2023-11-30 19:52:20 24 4
gpt4 key购买 nike

要求

我正在尝试构建一个将 json 字符串作为输入的函数。并输出对象列表。json 字符串的格式与此类似:

{\"custlist\":[{\"cust_name\":\"Vincent\",\"cust_id\":\"klq:206f387:2d08m92t6\"},{\"cust_name\":\"Joyce\",\"cust_id\":\"125g:1474grx:2d03t9dld\"}]}

我的搜索

有很多解决方案将 json 数组反序列化为对象列表,但数组从字符串的开头开始。即没有\"cuSTList\": 部分

如果我们在 json 字符串中有\"cuSTList\": 部分,这些解决方案就会失效。

我的代码

这是我的 C# 代码。它正在工作,但我不得不使用正则表达式来匹配输入字符串。似乎过于复杂。必须有更简单的方法。有知道的请指教

    public void Test()
{
string str = {\"custlist\":[{\"cust_name\":\"Vincent\",\"cust_id\":\"klq:206f387:2d08m92t6\"},{\"cust_name\":\"Joyce\",\"cust_id\":\"125g:1474grx:2d03t9dld\"}]};

List<Customer> list = Json2List<Customer>(str);
foreach (Customer c in list)
{
console.writeline ("name=" + c.cust_name);
console.writeline ("id=" + c.cust_id);
}

}


public List<T> Json2List<T>(string s)
{
string json_listname = Regex.Match(s, "\"" + @"(\w+?)" + "\":").Groups[0].Value;
JObject jObject = JObject.Parse(s);
List<JToken> jTokenList = jObject.GetValue(json_listname).ToList();

List<T> LstT = new List<T>();
foreach (JToken jt in jTokenList)
{
T obj = jt.ToObject<T>();
LstT.Add(obj);

}

return LstT;

}

public class Customer
{
public string cust_name { get; set; }
public string cust_id { get; set; }

}

最佳答案

我真的不知道问题是什么,但本质上:

public class CustomerList {
[JsonProperty("custlist")]
public Customer[] Customers { get; set; }
}

public class Customer
{
[JsonProperty("cust_name")]
public string Name { get; set; }

[JsonProperty("cust_id")]
public string Id { get; set; }
}

var sample = "{\"custlist\":[{\"cust_name\":\"Vincent\"},{\"cust_id\":\"klq206f3872d08m92t6\"},{\"cust_name\":\"Joyce\"},{\"cust_id\":\"125g1474grx2d03t9dld\"}]}";

var result = JsonConvert.DeserializeObject<CustomerList>(sample).Customers;
// Or!

var dictResult = JsonConvert.DeserializeObject<Dictionary<string, Customer[]>>(sample)["custlist"];

关于c# - 将 json 字符串反序列化为 .NET 对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59098442/

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