我无法将 IRestresponse 转换为对象。我错过了什么?

I'm not able to convert IRestresponse to a object. What am i missing?

我希望有人能帮我解决这个问题,因为我很困 ;) 我不明白我遇到的错误:

Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'OdosTest.OdosRecord' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.

我的 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": "",
                "isNumericComplement": false,
                "values": [
                    {
                        "timestamp": "2020-07-03T12:59:04Z",
                        "value": "CAN"
                    }
                ]
            },
            {
                "source": "OBD",
                "name": "01_31_TravelledDistSinceCodeCleared",
                "displayName": "TravelledDistSinceCodeCleared",
                "number": "0131",
                "unit": "km",
                "isNumericComplement": false,
                "values": [
                    {
                        "timestamp": "2020-07-03T12:59:04Z",
                        "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": "",
            "isNumericComplement": false,
            "values": [
                {
                    "timestamp": "2020-07-03T12:59:04Z",
                    "value": "CAN"
                }
            ]
        },
        {
            "source": "OBD",
            "name": "01_31_TravelledDistSinceCodeCleared",
            "displayName": "TravelledDistSinceCodeCleared",
            "number": "0131",
            "unit": "km",
            "isNumericComplement": false,
            "values": [
                {
                    "timestamp": "2020-07-03T12:59:04Z",
                    "value": "53749"
                }
            ]
        }
    ]
}