如何解决我无法将IRestresponse转换为对象我想念什么?
我希望有人能在这里为我提供帮助,因为我很困;;) 我不明白我得到的错误:
无法将当前JSON数组(例如[1,2,3])反序列化为类型“ OdosTest.OdosRecord”,因为该类型需要JSON对象(例如{“ name”:“ value”})才能正确反序列化。 / p>
我的json响应不正确吗(见底部)?
我试图将我的IRestResponse反序列化到一个对象,但是没有运气。应该找到这些课程,还是我错在哪里?
这是我的代码:
using System;
using RestSharp;
using Newtonsoft.Json;
using System.Collections.Generic;
namespace OdosTest
{
class Program
{
static void Main(string[] args)
{
var client = new RestClient("https://triscan.odosolutions.com/api/v1/streams");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization","Basic HIDDEN");
IRestResponse response = client.Execute(request);
var odosRecord = JsonConvert.DeserializeObject<OdosRecord>(response.Content);
//Console.WriteLine(response.Content);
}
}
public class OdosRecord
{
public int version { get; set; }
public string id { get; set; }
public int loggerImei { get; set; }
public string vin { get; set; }
public DateTime startTime { get; set; }
public Signal[] signals { get; set; }
}
public class Signal
{
public string source { get; set; }
public string name { get; set; }
public string displayName { get; set; }
public string number { get; set; }
public string unit { get; set; }
public bool isNumericComplement { get; set; }
public Value[] values { get; set; }
}
public class Value
{
public DateTime timestamp { get; set; }
public string value { get; set; }
}
}
这是我得到的答复:
[
{
"version": 1,"id": "0414bafa-39fe-4924-a1e3-f2180161f058","loggerImei": 1000606,"vin": "WF0VXXGCEVFY08396","startTime": "2020-07-03T12:59:04.000345Z","signals": [
{
"source": "OBD","name": "01_42_CMV","displayName": "CMV","number": "0142","unit": "V","isNumericComplement": false,"values": [
{
"timestamp": "2020-07-03T12:59:04Z","value": "13.78"
}
]
},{
"source": "OBD","name": "DETECTED_PROTOCOL","displayName": "DETECTED_PROTOCOL","number": "N/A","unit": "","value": "CAN"
}
]
},"name": "01_31_TravelledDistSinceCodeCleared","displayName": "TravelledDistSinceCodeCleared","number": "0131","unit": "km","value": "53749"
}
]
}
]
}
]
解决方法
您的json包含一个List<OdosRecord>
,因此应该可以解决此问题:
var odosRecord = JsonConvert.DeserializeObject<List<OdosRecord>>(response.Content);
否则,您将云更改为json(如果您能够更改合同):
{
"version": 1,"id": "0414bafa-39fe-4924-a1e3-f2180161f058","loggerImei": 1000606,"vin": "WF0VXXGCEVFY08396","startTime": "2020-07-03T12:59:04.000345Z","signals": [
{
"source": "OBD","name": "01_42_CMV","displayName": "CMV","number": "0142","unit": "V","isNumericComplement": false,"values": [
{
"timestamp": "2020-07-03T12:59:04Z","value": "13.78"
}
]
},{
"source": "OBD","name": "DETECTED_PROTOCOL","displayName": "DETECTED_PROTOCOL","number": "N/A","unit": "","value": "CAN"
}
]
},"name": "01_31_TravelledDistSinceCodeCleared","displayName": "TravelledDistSinceCodeCleared","number": "0131","unit": "km","value": "53749"
}
]
}
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。