Я полностью c # новичок. Я пытаюсь преобразовать данные JSON в C #. Я борюсь со списком. Пока я могу конвертировать основные методы, у меня есть ошибка в этом со списком. Не могли бы вы дать мне несколько советов, как решить мою проблему?
Исходные данные JSON
[{"data": {"Temperature": {"data": {"2018-07-04 13:05:00": 20.9224991798401}, "meta": {"units": "Celsius", " name ":" Temperature "," theme ":" Weather "}}}," latest ":" 2018-07-04 13:05:00 "," sensor_height ": -999," type ":" Weather ", "base_height": -999, "geom": {"координаты": [-1.62469, 54.98274], "type": "Point"}, "active": "True", "name": "sportshall_oat", "source ": {" document ": null," fancy_name ":" BMS "," db_name ":" Bms "," third_party ": false," web_display_name ":" BMS "}}]
Основной класс
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
var client = new WebClient();
var text = client.DownloadString("http://uoweb1.ncl.ac.uk/api/v1/sensor/live.json?sensor_name=sportshall_oat&api_key=4dopcdjiu3wtzfl32hn94hbf5ubm3q89jbh18iaxaqdzc10nlgbebqqvxqyt3ymydi59fjnyrmuqtgtdxb1sm5msac");
Rootobject ro = JsonConvert.DeserializeObject<Rootobject>(text);
Console.WriteLine("current time = " + ro.Property1);
Class1 c1 = JsonConvert.DeserializeObject<Class1>(text);
Data data = JsonConvert.DeserializeObject<Data>(text);
Temperature temperature = JsonConvert.DeserializeObject<Temperature>(text);
Console.WriteLine("data = " + temperature.data);
Data1 d1 = JsonConvert.DeserializeObject<Data1>(text);
Meta meta = JsonConvert.DeserializeObject<Meta>(text);
Geom geom = JsonConvert.DeserializeObject<Geom>(text);
Source source = JsonConvert.DeserializeObject<Source>(text);
}
}
}
Данные JSON (сгенерированные Visual studio)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
public class Rootobject
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
public Data data { get; set; }
public string latest { get; set; }
public int sensor_height { get; set; }
public string type { get; set; }
public int base_height { get; set; }
public Geom geom { get; set; }
public string active { get; set; }
public string name { get; set; }
public Source source { get; set; }
}
public class Data
{
public Temperature Temperature { get; set; }
}
public class Temperature
{
public Data1 data { get; set; }
public Meta meta { get; set; }
}
public class Data1
{
public float _20180704130500 { get; set; }
}
public class Meta
{
public string units { get; set; }
public string name { get; set; }
public string theme { get; set; }
}
public class Geom
{
public float[] coordinates { get; set; }
public string type { get; set; }
}
public class Source
{
public object document { get; set; }
public string fancy_name { get; set; }
public string db_name { get; set; }
public bool third_party { get; set; }
public string web_display_name { get; set; }
}
}
Когда я пытаюсь запустить мою программу, консоль ломается. После отладки я могу сказать, где проблема, но я не знаю, как ее исправить. Появляется сообщение об ошибке
Newtonsoft.Json.JsonSerializationException: «Невозможно десериализовать
текущий массив JSON (например, [1,2,3]) в тип 'ConsoleApp2.Rootobject'
потому что тип требует JSON-объекта (например, {"name": "value"}) для
правильно десериализовать.
Чтобы исправить эту ошибку, либо измените JSON на объект JSON (например,
{"name": "value"}) или измените десериализованный тип на массив или
тип, который реализует интерфейс коллекции (например, ICollection, IList)
как List, который можно десериализовать из массива JSON.
JsonArrayAttribute также может быть добавлен к типу, чтобы заставить его
десериализовать из массива JSON.
Спасибо всем заранее.