peoria123 Ответов: 1

В формате JSON в CSV проблема json.net в C# десериализация





Преобразование Json в CSV
Я использую библиотеку JSON .net
У меня есть большой файл json, и мне нужно преобразовать его в файл. csv, который я могу десериализовать в массив datatable и

datatable в csv.
как десериализовать весь файл в csv ? он имеет список, массив некоторых рутообъектов

Я сгенерировал классы из файла json с помощью "json2csharp"

структура файла json;
{
    "Active":"0",
    "Customer_Reference":"Suncor",
    "Datalink_Bus":"J1939",
    "Engine_Serial_Number":"66302847",
    "Equipment_ID":"0300",
    "FMI":"1",
    "Latitude":"56.727",
    "Longitude":"-111.381",
    "Message_Type":"FC",
    "Notification_Version":"2.004.002",
    "Occurrence_Count":"1",
    "Occurrence_Date_Time":"2016-10-11T14:34:38.150Z",
    "SPN":"100",
    "Sent_Date_Time":"2016-10-12T00:52:28.825Z",
    "Snapshots":
    [{ 
         "Parameter":
         [{
              "Name":"Truck speed",
              "Parameter_Source_Address":"",
              "Value":"0"
          },
          { 
              "Name":"HP Feedback - Alt In", 
              "Parameter_Source_Address":"", 
              "Value":"7"
          }],
          "Snapshot_DateTimestamp":"2016-10-11T14:34:09.000Z"
     }, 
     {
         "Parameter":
         [{
              "Name":"Truck speed",
              "Parameter_Source_Address":"",
              "Value":"0"
          },
          {
              "Name":"HP Feedback - Alt In",
              "Parameter_Source_Address":"",
              "Value":"7"
          }],
         "Snapshot_DateTimestamp":"2016-10-11T14:34:10.000Z"
     }]
}


Занятия:
 public class Parameter
    {
        public string Name { get; set; }

        public string Parameter_Source_Address { get; set; }

        public string Value { get; set; }

    }
 
public class Snapshot
    {
        public List<parameter> Parameter { get; set; }

        public string Snapshot_DateTimestamp { get; set; }

    }
public class RootObject
    {
        public string Active { get; set; }

        public string Customer_Reference { get; set; }

        public string Datalink_Bus { get; set; }

        public string Engine_Serial_Number { get; set; }

        public string Equipment_ID { get; set; }

        public List<snapshot> Snapshots { get; set; }
}


Я получаю только столбцы в представлении datagrid и пустые строки.(нулевой)

как разобрать многослойный Json в CSV

Что я уже пробовал:

public string ReadJsonFile(String Filepath)
{
    string json = string.Empty;
    // char seperator = ',';

    using (StreamReader read = new StreamReader(textBox1.Text))
    {
        json = read.ReadToEnd();

	var data1 = JsonConvert.DeserializeObject<parameter>(json);

        List<parameter> data = JsonConvert.DeserializeObject<list<parameter>>(json);

        DataTable dTable = ToDataTable(data)  ;//call function to convert list to datatable

        dataGridView1.DataSource = dTable;
    }
    return json;
}


При этом я получаю 3 столбца (имя,адрес параметра, значение)в datatable, но они пусты ..нет данных строк.

Philippe Mori

Использует блок кода для вашего кода, чтобы сделать его читаемым... и увеличить шанс получить некоторую помощь.

Кроме того, что такое декларация о parameter класс и где находится код для записи в CSV-файл? Мы не можем сказать вам о проблеме в вашем коде, если его нет!

1 Ответов

Рейтинг:
0

Perić Željko

Вот несколько примеров по следующим url-адресам :

Создание CSV из JSON в C#[^]

Преобразование строки JSON в CSV и CSV в JSON в c# - переполнение стека[^]


peoria123

Спасибо!!