Код: Выделить всё
{
"uniqueID": 123456789,
"plate": "0123456789ABCD",
"GPSDate": "2021-04-13T07:38:24Z",
"latitude": 43.12345,
"longitude": -3.12345,
"speed": 120,
"course": 325,
"odometer": 205486.732,
"receivedDate": "2021-04-13T07:38:24Z",
"stateInfo": {
"stateData": {
"stateParam": "50+",
"stateDetail": "12345"
}
},
"GPSQuality": 1,
"CANInfo": {
"CANData": {
"CANParam": "RPM",
"CANValue": "3250"
}
},
"peripheralsInfo": {
"peripheralsData": {
"peripheralsParam": "Motor",
"peripheralsValue": "En marcha"
}
},
"geofenceInfo": {
"geofenceData": {
"geofencePoint": "Punto 1",
"geofencePolygon": "Geocerca Poligonal 1"
}
}
}
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DAL
{
public class CANData
{
public string? CANParam { get; set; }
public string? CANValue { get; set; }
}
}
namespace DAL
{
public class geofenceData
{
public string? geofencePoint { get; set; }
public string? geofencePolygon { get; set; }
}
}
namespace DAL
{
public class peripheralsData
{
public string? peripheralsParam { get; set; }
public string? peripheralsValue { get; set; }
}
}
namespace DAL
{
public class stateData
{
public string? stateParam { get; set; }
public string? stateDetail { get; set; }
}
}
namespace DAL
{
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 stateData[]? stateInfo { get; set; }
public int GPSQuality { get; set; }
public CANData[]? CANInfo { get; set; }
public peripheralsData[]? peripheralsInfo { get; set; }
public geofenceData? geofenceInfo { get; set; }
}
}
Код: Выделить всё
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using DAL;
namespace BIL
{
public class FlotasNetClient
{
private static string? _baseUrl;
private static string? _username;
private static string? _sha256Concatenado;
private static string? _company;
public FlotasNetClient()
{
var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").Build();
_baseUrl = builder.GetSection("baseUrl").Value;
_username = builder.GetSection("username").Value;
_sha256Concatenado = builder.GetSection("sha256Concatenado").Value;
_company = builder.GetSection("company").Value;
}
public async Task GetVehicleInfoByDate()
{
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://servicios.flotasnet.es:1443/api/GetInfoVehicleByDate2?startdate=2024-10-09T01%3A00%3A00Z&enddate=2024-10-09T01%3A05%3A00Z"),
Headers =
{
{ "user-agent", "vscode-restclient" },
{ "accept", "application/json" },
{ "user", _username },
{ "password", _sha256Concatenado },
{ "company", _company },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
var Deserialized = JsonConvert.DeserializeObject(body);
return Deserialized;
}
}
}
}
Код: Выделить всё
using BIL;
using Newtonsoft.Json;
var client = new FlotasNetClient();
var vehicleData = await client.GetVehicleInfoByDate();
Newtonsoft.Json.JsonSerializationException: 'Невозможно десериализовать текущий объект JSON ( например, {"name":"value"}) в тип 'DAL.vehicleInfo[]', поскольку для правильной десериализации этого типа требуется массив JSON (например, [1,2,3]).
Чтобы исправьте эту ошибку: либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип, чтобы он был обычным типом .NET (например, не примитивным типом, например целым числом, а не типом коллекции, например массив или List), который можно десериализовать из объекта JSON. JsonObjectAttribute также можно добавить к типу, чтобы принудительно выполнить его десериализацию из объекта JSON.
Путь «сообщение», строка 1, позиция 11.'
Увидев ошибку, я изменил тип данных с VehicleInfo[] на List, но ошибка продолжала появляться во время компиляции.
Newtonsoft.Json.JsonSerializationException: 'Невозможно десериализовать текущий объект JSON (например, {"name":"value"}) в тип 'System.Collections.Generic.List`1[ DAL.vehicleInfo]', поскольку для правильной десериализации типу требуется массив JSON (например, [1,2,3]).
Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1 ,2,3]) или измените десериализованный тип так, чтобы это был обычный тип .NET (например, не примитивный тип, такой как целое число, не тип коллекции, такой как массив или List), который можно десериализовать из объекта JSON. . JsonObjectAttribute также можно добавить к типу, чтобы принудительно выполнить его десериализацию из объекта JSON.
Путь «сообщение», строка 1, позиция 11.'
Подробнее здесь: https://stackoverflow.com/questions/790 ... to-type-da