0

Мне необходимо получить JSON строку, такого вида:

{
   "id":1599455743000,
   "sensors":[
      {
         "name":"49_1201_010110_TEMPE1",
         "zam_date":"09/07/20 08:15:43",
         "temp":21.2999992
      },
      {
         "name":"49_1201_010110_TEMPE2",
         "zam_date":"09/07/20 08:15:43",
         "temp":21.8999996
      },
      {
         "name":"49_1201_010110_TEMPE3",
         "zam_date":"09/07/20 08:15:43",
         "temp":23
      },
      {
         "name":"49_1201_010110_TEMPE4",
         "zam_date":"09/07/20 08:15:43",
         "temp":23.5
      }
   ]
}

Необходимые классы я создал:

public class jsonTempObjects
{
    public int id { get; set; }
    public IList<objectOfSensors> sensors { get; set; }
}

public class objectOfSensors { public string name { get; set; } public string zam_date { get; set; } public float temp { get; set; } }

Данные в класс я добавляю так:

private void button2_Click(object sender, EventArgs e)
{
    var jsonObj = new jsonTempObjects();
    jsonObj.id = 49;
    var jsonObjTemp = new objectOfSensors();
    jsonObjTemp.name = "49_test";
    jsonObjTemp.temp = 26;
    jsonObjTemp.zam_date = "09/07/20 08:15:43";
    jsonObj.sensors.Add(jsonObjTemp);
    MessageBox.Show(JsonSerializer.Serialize(jsonObj));
}

Что я делаю не так? Я уже все варианты перепробовал. Помогите, пожалуйста разобраться.

Скриншот ошибки

Скриншот ошибки (метод Add)

  • Так вы не инифиализировали список. Можно сделать так например в самом классе public IList sensors { get; } = new LIst(); и добавлять через Add() – Pavel Popov Sep 27 '20 at 15:01
  • @PavelPopov, Оказалось так просто... Спасибо Вам большое! Правда в классе не получилось - посыпались ошибки. Выполнил инициализацию при нажатии на кнопку, теперь все ок! – AlexLuzik Sep 27 '20 at 15:08
  • текстовую информацию лучше прилагать в виде текста: а) читать легче; б) можно копировать; в) поиск работает. исправить текст вопроса можно, нажав [edit] ниже текста вопроса – aleksandr barakin Sep 28 '20 at 06:22

1 Answers1

1

Благодаря комментарию @PavelPopov получилось устранить ошибку. Спасибо!

private void button2_Click(object sender, EventArgs e)
{
    var jsonObj = new jsonTempObjects();
    jsonObj.id = 49;
    var jsonObjTemp = new objectOfSensors();
    jsonObj.sensors = new List();
    jsonObjTemp.name = "49_test";
    jsonObjTemp.temp = 26;
    jsonObjTemp.zam_date = "09/07/20 08:15:43";
    jsonObj.sensors.Add(jsonObjTemp);
    MessageBox.Show(JsonSerializer.Serialize(jsonObj));
}