#java #json #database #csv #read-write
#java #json #База данных #csv #чтение-запись
Вопрос:
Я пытался выполнить запись в файл CSV из файла JSON, используя библиотеку NorthConcepts datapipeline следующим образом, однако у меня возникли проблемы. Данные в файле JSON либо повторяются, либо поля разделены и записаны в разных строках. Например, из приведенного ниже кода я мог бы получить комбинацию следующих строк: Строка 1: createdAt, ID, строка 2: createdAt, ID, IDString, строка 3: createdAt, IDString аналогично. У меня есть около 30 полей и около 4 строк в файле CSV, в которые записываются данные для одной и той же записи, но с заполненными разделенными полями. Кто-нибудь знает, в чем проблема? Файл JSON, из которого я читаю, не содержит повторяющихся данных.
Я считываю данные следующим образом :
DataReader reader = new JsonReader(new File(FILE))
.addField("CreatedAt", "//array/object/created_at")
.addField("ID", "//array/object/id")
.addField("IDString", "//array/object/id_str")
.addField("Text", "//array/object/actualTweet")
Запись данных следующим образом :
DataWriter writer = new CSVWriter(new File("../Twix/files/x.csv" ));
JobTemplate.DEFAULT.transfer(reader, writer);
Используемая библиотека : http://northconcepts.com/data-pipeline/
javadocs :http://northconcepts.com/data-pipeline/javadocs /
Пример CSV :
Name ProfileImageURL Location CreatedAt FollowRequestSent IsTranslator DefaultProfile FavouritesCount ContributorsEnabled
The Guardian London
The Guardian London
The Guardian London Thu Nov 05 23:49:19 0000 2009 130
The Guardian London Thu Nov 05 23:49:19 0000 2009 130
The Guardian London Thu Nov 05 23:49:19 0000 2009 130
http://pbs.twimg.com/profile_images/2814613165/f3c9e3989acac29769ce01b920f526bb_normal.png FALSE FALSE FALSE FALSE
Здесь приведенный выше URL-адрес предназначен для второго столбца.
Комментарии:
1. На самом деле это не помогает, но я думаю, что я бы преобразовал Json в список объектов. Один объект, представляющий строку данных из конечного файла csv. Затем создайте программу записи CSV, которая добавляет заголовки столбцов, а затем записывает каждый объект по мере необходимости. Пустые поля объекта могут стать пустыми строками в файле CSV.
2. Во что вы передаете
JsonReader.addRecordBreak()
?3. Это то, что я передаю в addRecordBreak : //array /object. Хотя в этом JSON есть вложенные объекты, они мне не нужны, поэтому я их не использую. Как вы думаете, это может быть проблемой?