Как я могу преобразовать файл TSV в JSON, если он сохранен как .txt? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть очень большая таблица, сохраненная как текстовый файл, который импортируется в мою компанию из внешнего источника. Форматирование этого файла выглядит так, как будто это должен быть .TSV. Мне нужно найти способ поместить его в наблюдаемую коллекцию. Я думал, что могу использовать десериализатор для автоматического анализа. Это вообще не сработало, так как у меня нет цитат, сохраненных во всем документе. Затем я нашел это . Ответ от giotskhada, похоже, сработает, но он в Python, и у меня нет медианного файла, в который его можно было бы сохранить. Вот пример txt файла:

id     FieldName1     FieldName2     FieldName3     FieldName4
1     test1           test3     test4
2           test2     test3     test4
3     test1     test2     test3     test4

и вот как я хотел бы, чтобы он читался:

[ {"id":"1",
   "FieldName1":"test1",
   "FieldName2":"null",
   "FieldName3":"test3",
   "FieldName4":"test4"}
  },
  {"id":"2",
   "FieldName1":"null",
   "FieldName2":"test2",
   "FieldName3":"test3",
   "FieldName4":"test4"}
  },      
  {"id":"3",
   "FieldName1":"test1",
   "FieldName2":"test2",
   "FieldName3":"test3",
   "FieldName4":"test4"}
  ]

Что я могу сделать, чтобы это произошло в C#?

1 Ответ

1 голос
/ 06 мая 2020

Ну, если вы откроете для использования внешнюю библиотеку, Cinchoo ETL поможет добиться обработки большого файла в ожидаемом формате.

установочный пакет ChoETL. JSON

Вот пример рабочего кода

string tsv = @"id   FieldName1  FieldName2  FieldName3  FieldName4
1   test1       test3   test4
2       test2   test3   test4
3   test1   test2   test3   test4";

StringBuilder json = new StringBuilder();

using (var r = ChoTSVReader.LoadText(tsv)
    .WithFirstLineHeader()
    )
{
    using (var w = new ChoJSONWriter(json))
        w.Write(r);
}

Console.WriteLine(json.ToString());

Вывод:

[
 {
  "id": "1",
  "FieldName1": "test1",
  "FieldName2": null,
  "FieldName3": "test3",
  "FieldName4": "test4"
 },
 {
  "id": "2",
  "FieldName1": null,
  "FieldName2": "test2",
  "FieldName3": "test3",
  "FieldName4": "test4"
 },
 {
  "id": "3",
  "FieldName1": "test1",
  "FieldName2": "test2",
  "FieldName3": "test3",
  "FieldName4": "test4"
 }
]

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...