конвертировать CSV/XLS в JSON?

Кто-нибудь знает, есть ли приложение, которое позволит мне конвертировать предпочтительно XLS в JSON?

Я также соглашусь на конвертер из CSV, так как это то, что мне, вероятно, придется писать самому, если под рукой ничего нет.


person mkoryak    schedule 19.03.2009    source источник
comment
Как устроен XLS? Вы предполагаете, что первая строка - это заголовки столбцов?   -  person SheetJS    schedule 19.10.2013
comment
CSVkit делает следующее: csvkit.readthedocs.org/en/latest/scripts/csvjson. html   -  person Amanda    schedule 04.03.2014
comment
CsvCruncher принимает CSV как таблицу SQL и позволяет вам выполнить SELECT, экспортируя результат в CSV или JSON. github.com/OndraZizka/csv-cruncher   -  person Ondra Žižka    schedule 02.10.2018
comment
Это можно легко сделать с помощью фрейма данных pandas. Импортируйте свой csv в кадр данных pandas и скройте его в json.   -  person R4444    schedule 20.12.2018
comment
npmjs.com/package/convert-csv-to-json   -  person Gene Bo    schedule 20.07.2019
comment
Я бы посоветовал вам взглянуть на преобразователь данных (отказ от ответственности — я его разработчик). Он выполняет локальное преобразование между CSV, JSON, XML и YML. Он предлагает ряд настроек преобразования (с хорошими значениями по умолчанию), поэтому вы можете адаптировать результат для своих целей. Вы можете получить его в Mac App Store или Магазин Microsoft.   -  person Geo Systems    schedule 01.01.2020


Ответы (10)


Это отлично сработало для меня и НЕ требует загрузки файла:

https://github.com/cparker15/csv-to-json?files=1

person zmonteca    schedule 31.01.2011
comment
Если вы хотите преобразовать текст в текст, который можно вставить в свой код, используйте параметр Actionscript. - person Steve O'Connor; 18.11.2013
comment
К сожалению, этот сайт упал - person Mazen Kasser; 28.11.2013
comment
Похоже, что источник находится в GIT: github.com/cparker15/csv-to -json?files=1 - person zmonteca; 01.12.2013
comment
@zmonteca Обновил ответ с вашей ссылкой - person robertc; 27.01.2014
comment
Спасибо, это работает. вам просто нужно обновить зависимости этого проекта, иначе он не запустится - person hd84335; 06.05.2017

Вы можете попробовать этот инструмент, который я сделал:

Г-н. Конвертер данных

Он конвертирует в JSON, XML и другие.

Все это также на стороне клиента, поэтому ваши данные никогда не покидают ваш компьютер.

person Shan Carter    schedule 23.05.2011
comment
выглядит интересно, я вернусь к этому, когда мне снова понадобится - person mkoryak; 24.05.2011
comment
Это нормально, но имейте в виду, что он не экранирует кавычки правильно. Когда ваш CSV содержит двойные кавычки, вывод не ускользает от него. Возможно, вам придется сделать это вручную. Тем не менее очень удобный инструмент. - person barrycarton; 29.10.2011
comment
Отличный инструмент! хорошо сделано. @barrycarton кажется, это было исправлено, если вы вытащите последний код из Github. Тот, что по ссылке выше, кажется устаревшим. - person Bach; 03.12.2012
comment
Привет @Shan Carter Я хочу, чтобы пользователь просто загружал файл Excel, а не копировал содержимое Excel. Возможно ли это с текущим кодом, или я должен его разветвить (если это возможно). Пожалуйста, поделитесь своими мыслями. - person Rahul Gautam; 09.08.2013
comment
В ЯМЛ? например github.com/nodeca/js-yaml :D - person sam; 01.10.2013
comment
Фантастический инструмент!!! Это экономит мне много часов... большое спасибо! - person fernaramburu; 11.07.2014
comment
Похоже ссылка битая :/ - person JCJS; 05.11.2014
comment
Черт возьми, это хороший инструмент. +1 наверняка. - person buildsucceeded; 30.01.2015
comment
Спасибо, приятно :) - person kahonmlg; 23.03.2015
comment
Спасибо @Шан Картер. Это сделало мою жизнь проще. - person guirto; 22.03.2016
comment
его фантастикаssssssssssssssssssssssstickcccc человек - person Khushal Chouhan; 02.08.2016
comment
Спасибо, мистер Дата! XD Очень полезно! - person adelriosantiago; 18.08.2016
comment
Потрясающий инструмент, @Shan Carter. Я позволил себе исправить несколько вещей в моем форке здесь: thdoan.github.io/mr-data-converter - person thdoan; 19.09.2016

Начиная с Powershell 3.0 (поставляется с Windows 8, доступно для Windows 7 и Windows Server 2008 но не Windows Vista ) вы можете использовать встроенную команду convertto-json:

PS E:> $topicsjson = import-csv .\itinerary-all.csv | ConvertTo-Json 

PS E:\> $topicsjson.Length
11909

PS E:\> $topicsjson.getType()

IsPublic IsSerial Name                                     BaseType                  
-------- -------- ----                                     --------                  
True     True     Object[]                                 System.Array              

Интернет-справка на сайте Technet

person knb    schedule 19.12.2012
comment
Дополнительный кредит: сохранить json в файл... $topicsjson | Add-Content -Путь mydata.json - person brady321; 10.04.2018

Если вы не можете найти существующее решение, довольно легко создать базовое решение на Java. Я только что написал один для клиента, и это заняло всего пару часов, включая поиск инструментов.

Apache POI будет читать двоичный файл Excel. http://poi.apache.org/

JSONObject создаст JSON

После этого нужно просто перебрать строки в данных Excel и построить структуру JSON. Вот некоторый псевдокод для основного использования.

FileInputStream inp = new FileInputStream( file );
Workbook workbook = WorkbookFactory.create( inp );

// Get the first Sheet.
Sheet sheet = workbook.getSheetAt( 0 );

    // Start constructing JSON.
    JSONObject json = new JSONObject();

    // Iterate through the rows.
    JSONArray rows = new JSONArray();
    for ( Iterator<Row> rowsIT = sheet.rowIterator(); rowsIT.hasNext(); )
    {
        Row row = rowsIT.next();
        JSONObject jRow = new JSONObject();

        // Iterate through the cells.
        JSONArray cells = new JSONArray();
        for ( Iterator<Cell> cellsIT = row.cellIterator(); cellsIT.hasNext(); )
        {
            Cell cell = cellsIT.next();
            cells.put( cell.getStringCellValue() );
        }
        jRow.put( "cell", cells );
        rows.put( jRow );
    }

    // Create the JSON.
    json.put( "rows", rows );

// Get the JSON text.
return json.toString();
person Matt York    schedule 05.05.2010
comment
Если у меня есть excel, хранящийся в E:/exceloutput.xlsx. Какими будут значения в файле и вводе в первых двух строках? - person Kate; 12.08.2016

Это работает для меня и работает на стороне клиента: http://www.convertcsv.com/csv-to-json.htm

person dataman    schedule 01.03.2013
comment
Спасибо за предложение :) Конвертер работает хорошо. - person Nekto; 30.04.2014
comment
Этот включает разделитель табуляции, так что вы можете вставлять прямо из Excel. - person Arlen Beiler; 30.06.2015

Я только что нашел это:

http://tamlyn.org/tools/csv2json/

(Примечание: ваш CSV-файл должен быть доступен через веб-адрес)

person DanDan    schedule 19.09.2009
comment
Для этого сервиса нужна кнопка загрузки. - person neoneye; 06.09.2011
comment
сеть вышла из строя - person Fai Zal Dong; 08.02.2017
comment
Ссылка не работает - person Aditya; 18.07.2018

Попробуйте крошечный бесплатный инструмент:

http://keyangxiang.com/csvtojson/

Он использует node.js модуль csvtojson.

person Keyang    schedule 27.03.2012
comment
Это уже не вживую. - person gm2008; 17.12.2015
comment
Ссылка актуальна. Он должен работать. - person Keyang; 19.06.2017
comment
Он находится на GitHub. Это самый гибкий инструмент. Я хотел создать вложенные массивы или объекты с помощью CSV (пример). - person Michael McGinnis; 03.07.2017

Ни одно из существующих решений не сработало, поэтому я быстро собрал сценарий, который справился бы с этой задачей. Также преобразует пустые строки в пустые значения и отделяет строку заголовка для JSON. Может потребоваться настройка в зависимости от диалекта CSV и набора символов.

#!/usr/bin/python
import csv, json
csvreader = csv.reader(open('data.csv', 'rb'), delimiter='\t', quotechar='"')
data = []
for row in csvreader:
    r = []
    for field in row:
        if field == '': field = None
        else: field = unicode(field, 'ISO-8859-1')
        r.append(field)
    data.append(r)
jsonStruct = {
    'header': data[0],
    'data': data[1:]
}
open('data.json', 'wb').write(json.dumps(jsonStruct))
person Tronic    schedule 26.09.2011
comment
Связано ли это с johntron.com/creations/csv-to-json? - person David; 04.10.2011
comment
Нет, за исключением того, что используются те же библиотеки (csv, json). Я написал свой код с нуля. Циклы необходимы для обработки, которую я хотел выполнить (преобразование кодировки и замена пустых строк нулевыми). - person Tronic; 08.10.2011
comment
Меня интересует конфликт между многими комментариями, в которых говорится, что это сработало для меня, и этим, утверждающим, что ни одно из существующих решений не сработало. - person B. Clay Shannon; 14.06.2013

Вместо жестко закодированных конвертеров, как насчет поддержки CSV для Jackson (процессор JSON): https://github.com/FasterXML/jackson-dataformat-csv. Таким образом, ядро ​​Jackson может читать JSON как POJO, Maps, JsonNode, почти что угодно. И поддержка CSV может сделать то же самое с CSV. Объедините их, и вы получите очень мощный, но простой конвертер между несколькими форматами (уже есть бэкэнды для XML, YAML и многое другое).

Статью, в которой показано, как это сделать, можно найти здесь.

person StaxMan    schedule 10.05.2012

Посмотрите, поможет ли это: Вернуться в CSV — преобразовать текст CSV в объекты; через JSON

Это сообщение в блоге, опубликованное в ноябре 2008 г., которое включает код C# для предоставления решения.

Из вступления в блоге:

Поскольку Json легче читать и писать, чем Xml. Отсюда следует, что CSV (значения, разделенные запятыми) легче читать и писать, чем Json. CSV также имеет такие инструменты, как Excel и другие, которые упрощают работу и создание. Поэтому, если вы когда-нибудь захотите создать файл конфигурации или данных для своего следующего приложения, вот некоторый код для преобразования CSV в JSON в объекты POCO.

person qxotk    schedule 19.03.2009
comment
благодаря. мне придется портировать это на java, но лучше, чем пытаться изобретать велосипед - person mkoryak; 19.03.2009
comment
рад, что это работает, c# -> java в любом случае довольно хорошо подходит. - person qxotk; 21.03.2009