gpt4 book ai didi

Json Net层次结构类

转载 作者:行者123 更新时间:2023-12-04 19:36:53 24 4
gpt4 key购买 nike

我在我的 VB.Net 上使用 Newtonsoft.Json,但在 json 反序列化方面遇到了问题。

完全是菜鸟。一个简单的类层次结构,我可以做到...但是像下面这样更复杂的,完全是个白痴。

谁能帮我从这个 JSON 构建序列化类层次结构??

{
"user": {
"user_id": 123456,
"total": 100,
"rewards": 0
},
"workers": {
"1": {
"worker_name": "rainfall_home",
"rate": 0,
"shares": 0
},
"2": {
"worker_name": "rainfall_office",
"rate": 7358.71,
"shares": 96564
},
"3": {
"worker_name": "rainfall_rig",
"rate": 0,
"shares": 77208
},
"4": {
"worker_name": "rainfall_s11",
"rate": 178365.22,
"shares": 3760356
},
"5": {
"worker_name": "rainfall_s12",
"rate": 196537.7,
"shares": 4152710
}
},
"total": {
"total_user": 5,
"record_date": 2
}
}

我如何获得 worker 的长度(总计)并循环使用它,以便我可以获得每个 worker 的记录?由于 worker 可以不断累加。

提前致谢。

最佳答案

当你试图获得 worker 总数并且你说 worker 可以继续加起来时,那么我建议你重组你的 JSON(如果你有修改的范围)以便可以将 worker 管理为一个 array 而不是像 object 一样在每次需要一个新的 worker 添加到 JSON 时添加它。请参阅下面建议的 JSON:

{
"user": {
"user_id": 123456,
"total": 100,
"rewards": 0
},
"workers": [
{
"worker_name": "rainfall_home",
"rate": 0,
"shares": 0
},
{
"worker_name": "rainfall_office",
"rate": 7358.71,
"shares": 96564
},
{
"worker_name": "rainfall_rig",
"rate": 0,
"shares": 77208
},
{
"worker_name": "rainfall_s11",
"rate": 178365.22,
"shares": 3760356
},
{
"worker_name": "rainfall_s12",
"rate": 196537.7,
"shares": 4152710
}
],
"total": {
"total_user": 5,
"record_date": 2
}
}

现在您的新分类如下:

public class RootObject
{
public User user { get; set; }
public List<Worker> workers { get; set; }
public Total total { get; set; }
}

public class User
{
public int user_id { get; set; }
public int total { get; set; }
public int rewards { get; set; }
}

public class Worker
{
public string worker_name { get; set; }
public double rate { get; set; }
public int shares { get; set; }
}

public class Total
{
public int total_user { get; set; }
public int record_date { get; set; }
}

现在您可以轻松遍历每个工作人员以获取其详细信息,如下所示:

string json = "YOUR_JSON_STRING";
RootObject rootObject = JsonConvert.DeserializeObject<RootObject> ( json );

Console.WriteLine("Total no. of workers: {0}", rootObject.workers.Count);

foreach ( Worker worker in rootObject.workers )
{
Console.WriteLine("Name: {0}, Rate: {1}, Shares: {2}", worker.worker_name, worker.rate.ToString("F2", CultureInfo.InvariantCulture), worker.shares);
}

关于Json Net层次结构类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191504/

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