gpt4 book ai didi

c# - 在 C# 中,如何为具有多个嵌套数组的 JSON 对象建模?

转载 作者:太空狗 更新时间:2023-10-29 18:04:34 28 4
gpt4 key购买 nike

我正在从我正在连接的系统获取此 JSON 响应,并试图找出将其反序列化为 C# 对象的最佳方法。我目前正在使用 RestSharp这看起来非常简单易用,但 JSON 的格式让我有点困惑。这是它的格式:

[
{"name": "Tickets:",
"schema": [
{"dataType": "string", "colName": "First", "idx": 0},
{"dataType": "string", "colName": "Second", "idx": 1},
{"dataType": "string", "colName": "Name", "idx": 2}
],
"data": [
["bill", "test", "joe"],
["bill2", "test2", "joe2"],
["bill3", "test3", "joe3"]
]
}
]

这是我当前的代码:

var url = "http://myUrl:10111";
var client = new RestClient { BaseUrl = url };

var request = new RestRequest { Method = Method.GET, Resource = "/search?fmt=Json", RequestFormat = DataFormat.Json };
request.AddHeader("accept", "application/json");

var response = client.Execute(request);
var wptResponse = new JsonDeserializer().Deserialize<TicketResults>(response);
return wptResponse;

但如上所述,我正在尝试找出对 TicketResults 对象建模以支持反序列化上述消息的正确方法。

理想情况下我想要这样的东西:

 public class TicketResults
{
public List<Ticket> Tickets {get;set;}
}

public class Ticket
{
public string First {get;set;}
public string Second {get;set;}
public string Name {get;set;}
}

在上面的这个例子中,Tickets 集合中有 3 个条目。

另外,上面的 JSON 格式是否正常,因为我从未见过它被分解成单独的模式和数据部分(我可以看到它在哪里可以节省一些空间,但在这种情况下消息不是那么大)

最佳答案

在 Visual Studio 2012 及更高版本中,您可以转到编辑 > 选择性粘贴 > 将 JSON 粘贴为类。根据从剪贴板粘贴的示例,它会生成以下代码。

public class Rootobject
{
public Class1[] Property1 { get; set; }
}

public class Class1
{
public string name { get; set; }
public Schema[] schema { get; set; }
public string[][] data { get; set; }
}

public class Schema
{
public string dataType { get; set; }
public string colName { get; set; }
public int idx { get; set; }
}

string json = File.ReadAllText("json.txt");
Rootobject root = new Rootobject();
root.Property1 = JsonConvert.DeserializeObject<Class1[]>(json);

关于c# - 在 C# 中,如何为具有多个嵌套数组的 JSON 对象建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25253256/

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