Newtonsoft.Json.JsonSerializationException: 'Невозможно десериализовать текущий объект JSON (например, { "name":"value"}) в тип 'System.Collections.Generic.List`1[FlotasNetDAL.CANDataObj]', поскольку для правильной десериализации для этого типа требуется массив JSON (например, [1,2,3]).
Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип так, чтобы он был обычным типом .NET (например, не примитивным). тип, такой как целое число, а не тип коллекции, такой как массив или список), который можно десериализовать из объекта JSON. JsonObjectAttribute также можно добавить к типу, чтобы принудительно выполнить его десериализацию из объекта JSON.
Путь '[0].CANInfo.CANData', строка 1, позиция 301.'
Это наши занятия:
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlotasNetDAL
{
public class vehicleInfo
{
public long uniqueID { get; set; }
public string? plate { get; set; }
public DateTime GPSDate { get; set; }
public float latitude { get; set; }
public float longitude { get; set; }
public int speed { get; set; }
public int course { get; set; }
public float odometer { get; set; }
public DateTime receivedDate { get; set; }
public stateDataList? stateInfo { get; set; }
public int GPSQuality { get; set; }
public List? CANInfo { get; set; }
public peripheralsDataList? peripheralsInfo { get; set; }
public geofenceData? geofenceInfo { get; set; }
}
}
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlotasNetDAL
{
public class CANDataObj
{
public string? CANParam { get; set; }
public string? CANValue { get; set; }
}
}
Код: Выделить всё
public List? CANInfo { get; set; }
Код: Выделить всё
public CANDataObj? CANInfo { get; set; }
Код: Выделить всё
[
{
"uniqueID": 993283407,
"plate": "BU-18",
"GPSDate": "2024-01-08T11:25:47.000Z",
"latitude": 5.43813,
"longitude": -75.58696,
"speed": 0,
"course": 4,
"odometer": 1668.048,
"receivedDate": "2024-01-08T11:25:50.000Z",
"stateInfo": {
"stateData": [
{
"stateParam": "22+",
"stateDetail": "Arranque Motor"
}
]
},
"GPSQuality": 1,
"CANinfo": [],
"peripheralsInfo": {
"peripheralsData": [
{
"peripheralsParam": "Motor",
"peripheralsValue": "En marcha"
},
{
"peripheralsParam": "Bateria",
"peripheralsValue": "Cargando"
},
{
"peripheralsParam": "Pedal panico",
"peripheralsValue": "off"
},
{
"peripheralsParam": "Inmovilizador",
"peripheralsValue": "Bloqueado"
}
]
},
"geofenceInfo": {
"geofenceData": {}
}
},
{
"uniqueID": 993282114,
"plate": "VD-138",
"GPSDate": "2024-01-08T11:02:21.000Z",
"latitude": 5.43823,
"longitude": -75.5867,
"speed": -99,
"course": 0,
"odometer": 194142.083,
"receivedDate": "2024-01-08T11:08:31.000Z",
"stateInfo": {
"stateData": [
{
"stateParam": "12+",
"stateDetail": "Sin cobertura "
}
]
},
"GPSQuality": 2,
"CANinfo": [
{
"CANParam": "Combustible",
"CANValue": "168545"
},
{
"CANParam": "CombustibleNivel1",
"CANValue": "66"
},
{
"CANParam": "CombustibleNivel2",
"CANValue": "0"
},
{
"CANParam": "MotorRPM",
"CANValue": "0"
},
{
"CANParam": "odometro",
"CANValue": "349217"
},
{
"CANParam": "velocidad",
"CANValue": "0"
},
{
"CANParam": "TemperaturaLiquido",
"CANValue": "74"
},
{
"CANParam": "horasmotor",
"CANValue": "22087"
}
],
"peripheralsInfo": {
"peripheralsData": [
{
"peripheralsParam": "Motor",
"peripheralsValue": "Parado"
},
{
"peripheralsParam": "Bateria",
"peripheralsValue": "Cargando"
},
{
"peripheralsParam": "Pedal panico",
"peripheralsValue": "off"
},
{
"peripheralsParam": "Inmovilizador",
"peripheralsValue": "Bloqueado"
}
]
},
"geofenceInfo": {
"geofenceData": {}
}
]
Я пытаюсь десериализовать так:
Код: Выделить всё
var Des = JsonConvert.DeserializeObject(body);
Подробнее здесь: https://stackoverflow.com/questions/790 ... n-api-rest