Разбор JSON с C # и добавление результатов в комбинированный список winform - PullRequest
0 голосов
/ 19 сентября 2018

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

JSON выглядит так:

{"Id":0,"Name":"default","Option":"default","Description":"default","OtherDescription":"default"}

Я создал класс с именем Incidentсо свойствами, которые будут заполнены информацией json:

    public class Incident
{
    public Incident(int id, string name, string option, string description, string otherDescription)
    {
        Id = id;
        Name = name;
        Option = option;
        Description = description;
        OtherDescription = otherDescription;
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public string Option { get; set; }
    public string Description { get; set; }
    public string OtherDescription { get; set; }
}

и списком класса IncidentsList:

    public class IncidentsList
{
    public List<Incident> Incidents = new List<Incident>();

}

По какой-то причине я не могу заполнить элементы комбинированного списка именеминцидента.

Вот весь код, любая помощь будет высоко оценена:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        //
        var incident = new Incident(0, "default", "default", "default", "default");
        // Convert object to Json
        var strResultJson = JsonConvert.SerializeObject(incident);
        // Write values as Json file
        File.WriteAllText(@"configuration.json", strResultJson);
        // Read values from file
        var strReadJson = File.ReadAllText(@"configuration.json");  
        // Convert to Json Object
        var x = JsonConvert.DeserializeObject<IncidentsList>(strReadJson);

        foreach (var option in x.Incidents.Select(p => p.Name))
        {
            comboBox1.Items.Add(option);
        }

    }

}

public class Incident
{
    public Incident(int id, string name, string option, string description, string otherDescription)
    {
        Id = id;
        Name = name;
        Option = option;
        Description = description;
        OtherDescription = otherDescription;
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public string Option { get; set; }
    public string Description { get; set; }
    public string OtherDescription { get; set; }
}

public class IncidentsList
{
    public List<Incident> Incidents = new List<Incident>();

}

1 Ответ

0 голосов
/ 19 сентября 2018

Прежде всего, вы сериализуете один инцидент и пытаетесь десериализовать его в список инцидентов.Во-вторых, я не уверен на 100%, но думаю, что для десериализации Json нужен пустой конструктор, потому что он устанавливает открытые свойства после создания пустого объекта.

Так что добавьте свой первый инцидент в списока затем сериализовать это.

public partial class Form1 : Form
{
  public Form1() 
  {
    InitializeComponent();

  }

  private void Form1_Load(object sender, EventArgs e)
  {
    //
    var incident = new Incident(0, "default", "default", "default", "default");
    var list = new List<Incident>();
    list.Add(incident);
    // Convert object to Json
    var strResultJson = JsonConvert.SerializeObject(list);
    // Write values as Json file
    File.WriteAllText(@"configuration.json", strResultJson);
    // Read values from file
    var strReadJson = File.ReadAllText(@"configuration.json");  
    // Convert to Json Object
    var x = JsonConvert.DeserializeObject<List<Incident>>(strReadJson);

    foreach (var option in x.Select(p => p.Name))
    {
        comboBox1.Items.Add(option);
    }

  }

}

public class Incident
{

  public Incident()
  {
  }
  public Incident(int id, string name, string option, string description, string otherDescription)
  {
    Id = id;
    Name = name;
    Option = option;
    Description = description;
    OtherDescription = otherDescription;
  }

  public int Id { get; set; }
  public string Name { get; set; }
  public string Option { get; set; }
  public string Description { get; set; }
  public string OtherDescription { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...