gpt4 book ai didi

c# - 将 json 数组转换为数据表 asp.net

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:39 24 4
gpt4 key购买 nike

拜托,我是 json 的新手。我有一个传递值的 url,返回的数据在 json 中。我需要从这个 url 反序列化 json,然后将它绑定(bind)到 asp.net 中的 ListView 控件。这是 json 数据的样子。

   {"records":[{"record":{"Ch_ID":"27","User_id":"1","Ch_Name":"test1","Ch_Description":"test1description","Ch_Starttime":""}},{"record":{"Ch_ID":"29","User_id":"1","Ch_Name":"w","Ch_Description":"ww","Ch_Starttime":"12"}},{"record":{"Ch_ID":"30","User_id":"1","Ch_Name":"qq","Ch_Description":"qqqdescription","Ch_Starttime":"1222"}},{"record":{"Ch_ID":"31","User_id":"1","Ch_Name":"v","Ch_Description":"vv","Ch_Starttime":"1"}},{"record":{"Ch_ID":"32","User_id":"1","Ch_Name":"n","Ch_Description":"nnnn","Ch_Starttime":"111"}}]} 

有人知道我该怎么做吗?我已经尝试过 json.net,但它给我错误。

最佳答案

Json.NET 确实支持通过其内置的 DataTableConverter 反序列化 DataTable ,但是它希望将 JSON 格式化为数组,如下所示:

[
{
"Ch_ID": "27",
"User_id": "1",
// Other fields
},
{
"Ch_ID": "29",
"User_id": "1",
// Other fields
},
// Other records
]

您的 JSON 格式如下:

{
"records": [
{
"record": {
"Ch_ID": "27",
"User_id": "1",
// Other fields
}
},
{
"record": {
"Ch_ID": "29",
"User_id": "1",
// Other fields
}
},
// Other records
]
}

您可以使用 custom JsonConverter 将您的实际 JSON 转换为 Json.NET 所需的格式:

public class RecordDataTableConverter : Newtonsoft.Json.Converters.DataTableConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
return null;
if (reader.TokenType == JsonToken.StartObject)
{
var token = JToken.Load(reader);
token = new JArray(token.SelectTokens("records[*].record"));
using (var subReader = token.CreateReader())
{
while (subReader.TokenType == JsonToken.None)
subReader.Read();
return base.ReadJson(subReader, objectType, existingValue, serializer); // Use base class to convert
}
}
else
{
return base.ReadJson(reader, objectType, existingValue, serializer);
}
}
}

并按如下方式使用它:

var json = GetJson();

var settings = new JsonSerializerSettings
{
Converters = new[] { new RecordDataTableConverter() },
};

var table = JsonConvert.DeserializeObject<DataTable>(json, settings);

样本 fiddle .

关于c# - 将 json 数组转换为数据表 asp.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39921337/

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