我无法将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"
                }
            ]
        }
    ]
}