用Json.net类反序列化JSON对象数组
本文关键字:JSON 对象 数组 反序列化 Json net | 更新日期: 2023-09-27 18:11:53
我试图使用API来获取报告,但我在使用JSON.NET将JSON结果转换为可用信息时遇到了麻烦。我已经看了相当多的例子,但正确的类格式的类是逃避我。
JSON数据:{
"status": "OK",
"data": {
"event": {
"Time": "2015-09-01 17:31:47",
"Username": "user1",
"IP_Address": "1.2.3.4",
"Action": "action1",
"Data": "somedata"
},
"event": {
"Time": "2015-09-01 17:30:30",
"Username": "user2",
"IP_Address": "1.2.3.5",
"Action": "action2",
"Data": "data"
}
}
}
我现在在哪里:
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
public class aRoot
{
[JsonProperty("status")]
public string status { get; set; }
[JsonProperty("data")]
public aData data { get; set; }
}
public class aData
{
[JsonProperty("event")]
public List<aEvents> events { get; set; }
}
public class aEvents
{
[JsonProperty("Time")]
public DateTime time { get; set; }
[JsonProperty("UserName")]
public string user { get; set; }
[JsonProperty("IP_Address")]
public string ip { get; set; }
[JsonProperty("Action")]
public string action { get; set; }
[JsonProperty("Data")]
public string data { get; set; }
}
aRoot objReporting = JsonConvert.DeserializeObject<aRoot>(result);
有人有什么想法吗?
编辑:错误输出:
类型为'Newtonsoft.Json '的异常。在Newtonsoft.Json.dll中发生了JsonSerializationException,但未在用户代码中处理
附加信息:无法将当前JSON对象(例如{"name":"value"})反序列化为类型'System.Collections.Generic '。列出' 1[aEvents]',因为该类型需要一个JSON数组(例如[1,2,3])来正确反序列化。
要修复此错误,要么将JSON更改为JSON数组(例如[1,2,3]),要么更改反序列化类型,使其成为可以从JSON对象反序列化的普通。net类型(例如,不是像整数这样的原始类型,也不是像数组或列表这样的集合类型)。还可以将JsonObjectAttribute添加到类型中,以强制它从JSON对象进行反序列化。
data.event路径"。Time',第一行,位置39.
尝试将数据更改为:
{
"status": "OK",
"data": [
{
"Time": "2015-09-01 17:31:47",
"Username": "user1",
"IP_Address": "1.2.3.4",
"Action": "action1",
"Data": "somedata"
},
{
"Time": "2015-09-01 17:30:30",
"Username": "user2",
"IP_Address": "1.2.3.5",
"Action": "action2",
"Data": "data"
}
]}
然后将class更改为:
public class aRoot
{
[JsonProperty("status")]
public string status { get; set; }
[JsonProperty("data")]
public List<aEvents> data { get; set; }
}
你不需要"aData"