【发布时间】:2019-02-19 09:46:23
【问题描述】:
我有以下 json 字符串。
"data": {
"message": "Ok",
"success": true,
"serverTime": 1550568846,
"pageNo": 0,
"pageSize": 100,
"totalPages": 1,
"totalCount": 7,
"list": [
{
"vehicleNumber": "NL01N7848",
"deviceNumber": "358735072950479",
"vendorCode": "WE12881",
"venndorName": "kapoor Diesels",
"latitude": 12.195035555555556,
"longitude": 76.642826666666664,
"speed": 0.0,
"createdDate": 1550497439,
"location": "Unnamed Road, Byathahalli, Karnataka 571311, India",
"provider": "WHEELSEYE",
"vehicleType": "NA",
"accurate": false
},
{
"vehicleNumber": "NL01L0067",
"deviceNumber": "358735073314899",
"vendorCode": "WE12881",
"venndorName": "kapoor Diesels",
"latitude": 26.222473333333333,
"longitude": 91.702311111111115,
"speed": 0.0,
"createdDate": 1550568823,
"location": "21, Brahmaputra Industrial Park, Gauripur, Amingaon, Guwahati - Baihata Rd, Guwahati, Assam 781030, India",
"provider": "WHEELSEYE",
"vehicleType": "NA",
"ignition": false,
"accurate": false
},
{
"vehicleNumber": "NL01L1004",
"deviceNumber": "358735073306135",
"vendorCode": "WE12881",
"venndorName": "kapoor Diesels",
"latitude": 20.532204444444446,
"longitude": 85.952977777777775,
"speed": 0.0,
"createdDate": 1550568795,
"location": "Badshahi Road, Alarpur, Odisha 754025, India",
"provider": "WHEELSEYE",
"vehicleType": "NA",
"ignition": true,
"accurate": false
},
{
"vehicleNumber": "NL01L2044",
"deviceNumber": "358735073318866",
"vendorCode": "WE12881",
"venndorName": "kapoor Diesels",
"latitude": 22.567486666666664,
"longitude": 88.136897777777776,
"speed": 0.0,
"createdDate": 1550568787,
"location": "Amta-Ranihati Road, Ranihati, Mallik Bagan, West Bengal 711302, India",
"provider": "WHEELSEYE",
"vehicleType": "NA",
"ignition": false,
"accurate": false
},
{
"vehicleNumber": "NL01L2042",
"deviceNumber": "358735073311713",
"vendorCode": "WE12881",
"venndorName": "kapoor Diesels",
"latitude": 20.532215555555556,
"longitude": 85.953057777777772,
"speed": 0.0,
"createdDate": 1550568825,
"location": "Badshahi Road, Alarpur, Odisha 754025, India",
"provider": "WHEELSEYE",
"vehicleType": "NA",
"ignition": false,
"accurate": false
},
{
"vehicleNumber": "NL01L6027",
"deviceNumber": "NA",
"vendorCode": "WE12881",
"venndorName": "kapoor Diesels",
"latitude": 13.265313,
"longitude": 80.11657,
"speed": 0.0,
"createdDate": 1550565467,
"location": "Tirupati Rd, Manjankaranai, Tamil Nadu 601103, India",
"provider": "WHEELSEYE",
"vehicleType": "NA",
"accurate": false
},
{
"vehicleNumber": "HR38U3103",
"deviceNumber": "NA",
"vendorCode": "WE12881",
"venndorName": "kapoor Diesels",
"latitude": 27.594013,
"longitude": 77.59916,
"speed": 44.0,
"createdDate": 1550568763,
"location": "NH19, Bharthia, Uttar Pradesh 281406, India",
"provider": "WHEELSEYE",
"vehicleType": "NA",
"ignition": true,
"accurate": false
}
]
}
我想将其转换为 C# 类对象。 我正在使用以下类结构:
class Data
{
JsonData data { get; set; }
}
class JsonData
{
public string message { get; set; }
public bool success { get; set; }
public Int64 serverTime { get; set; }
public int pageNo { get; set; }
public int pageSize { get; set; }
public int totalPages { get; set; }
public int totalCount { get; set; }
List<VehicleDetails> list { get; set; }
}
class VehicleDetails
{
public string vehicleNumber { get; set; }
public string deviceNumber { get; set; }
public string vendorCode { get; set; }
public string venndorName { get; set; }
public double latitude { get; set; }
public double longitude { get; set; }
public double speed { get; set; }
public Int64 createdDate { get; set; }
public string location { get; set; }
public string provider { get; set; }
public string vehicleType { get; set; }
public bool accurate { get; set; }
}
但是每次我尝试反序列化上述 json 时,都会出现一个异常,提示 Invalid array pass in
编辑:
下面是反序列化的代码:
string jsonString;
JavaScriptSerializer jSerObj = new JavaScriptSerializer();
List<Data> lstData = (List<Data>) jSerObj.Deserialize(jsonString, typeof(List<Data>));
EDIT-2:
我已经从我的 json 字符串中删除了外部 []
请帮帮我。
【问题讨论】:
-
你的反序列化代码在哪里?
-
您的示例
JSON字符串在JSON-Array中,而不是JSON-object,因为它以[开头并以]结尾。因此,如果您的代码使用JsonConvert.DeserializeObject<Data>(<your json string here>);之类的内容,请将其更改为JsonConvert.DeserializeObject<List<Data>>(<your json string here>);之类的内容。 -
您的 Json 格式无效。你最好从检查和纠正你的 json 开始
-
上传到jsonformatter.curiousconcept.com会报错
Error:Expecting comma or ], not colon.,或者jsonlint.com报Error: Parse error on line 1: Expecting 'EOF', '}', ',', ']', got ':'基本问题是外容器分隔符是[表示数组,但"data": {}是一个对象属性。 -
@er-sho 我添加了用于反序列化的代码