konwertować CSV / XLS na JSON? [Zamknięte]


142

Czy ktoś wie, czy istnieje aplikacja, która pozwoli mi przekonwertować najlepiej XLS na JSON?

Zadowolę się również konwerterem z CSV, ponieważ prawdopodobnie będę musiał sam napisać, jeśli nic nie ma w pobliżu.


Jaka jest struktura XLS? Czy zakładasz, że pierwszy wiersz to nagłówki kolumn?
— SheetJS


CsvCruncher przyjmuje CSV jako tabelę SQL i pozwala wykonać SELECT, eksportując wynik jako CSV lub JSON. github.com/OndraZizka/csv-cruncher
— Ondra Žižka

Można to łatwo zrobić za pomocą pandy dataframe. Zaimportuj plik csv do pandy dataframe i zamień go w json.
— R4444

1
Proponuję spojrzeć na Data Transformer (zastrzeżenie - jestem jego twórcą). Konwertuje lokalnie między CSV, JSON, XML i YML. Oferuje szereg ustawień konwersji (z dobrymi ustawieniami domyślnymi), dzięki czemu możesz dostosować wynik do swoich celów. Możesz go pobrać z Mac App Store lub Microsoft Store .
— Geo Systems

Odpowiedzi:


77

To zadziałało idealnie dla mnie i NIE wymaga przesyłania pliku:

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


Jeśli chcesz przekonwertować na tekst, który możesz wkleić w swoim kodzie, użyj opcji „Actionscript”.
— Steve O'Connor

Niestety ta strona upadła
— Mazen Kasser

3
Wygląda na to, że źródło jest na GIT: github.com/cparker15/csv-to-json?files=1
— zmonteca

@zmonteca Zaktualizowałem odpowiedź swoim linkiem
— robertc

Dziękuję, działa. wystarczy zaktualizować zależności tego projektu, w przeciwnym razie nie
— zadziała

195

Możesz wypróbować to narzędzie, które stworzyłem:

Mr. Data Converter

Konwertuje do formatu JSON, XML i innych.

Wszystko to działa również po stronie klienta, więc Twoje dane nigdy nie opuszczają komputera.


wygląda ciekawie, źle do tego wrócę, gdy będę potrzebował ponownie
— mkoryak

6
Jest w porządku, ale pamiętaj, że nie usuwa poprawnie cytatów. Kiedy Twój plik CSV zawiera cudzysłowy, dane wyjściowe nie są uwzględniane. Być może będziesz musiał to zrobić ręcznie. Mimo to bardzo przydatne narzędzie.
— barrycarton

Świetne narzędzie! ładnie wykonane. @barrycarton, wygląda na to, że problem został rozwiązany, jeśli pobierzesz najnowszy kod z Github. Ten pod powyższym linkiem wydaje się nieaktualny.
— Bach

Cześć @Shan Carter Chcę, aby użytkownik po prostu załadował plik Excela, Nie kopiował zawartości programu Excel, Czy jest to możliwe z obecnym kodem, czy powinienem go rozwidlić (jeśli jest to możliwe). Podziel się swoimi przemyśleniami.
— Rahul Gautam

1
Niesamowite narzędzie, @Shan Carter. Pozwoliłem sobie naprawić kilka rzeczy w moim widelcu tutaj: thdoan.github.io/mr-data-converter
— thdoan

38

Od wersji Powershell 3.0 (dostarczanej z Windows 8, dostępnej dla Windows 7 i Windows Server 2008, ale nie dla Windows Vista) można użyć wbudowanego polecenia 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              

Strona pomocy online w witrynie Technet


7
Dodatkowy kredyt: zapisz json do pliku ... $ topicsjson | Add-Content -Path "mydata.json"
— brady321

28

Jeśli nie możesz znaleźć istniejącego rozwiązania, dość łatwo jest zbudować podstawowe rozwiązanie w Javie. Właśnie napisałem jeden dla klienta i zajęło mi to tylko kilka godzin, łącznie z badaniem narzędzi.

Apache POI odczyta plik binarny Excel. http://poi.apache.org/

JSONObject utworzy JSON

Następnie wystarczy przejść przez wiersze w danych programu Excel i zbudować strukturę JSON. Oto pseudo kod do podstawowego zastosowania.

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();

Jeśli mam program Excel przechowywany w E: /exceloutput.xlsx. Jakie byłyby wartości w pliku i inp w pierwszych dwóch wierszach?
— Kate




5

Żadne z istniejących rozwiązań nie działało, więc szybko zhakowałem skrypt, który wykonał zadanie. Konwertuje również puste ciągi na wartości null i oddziela wiersz nagłówka dla formatu JSON. Może wymagać dostrojenia w zależności od używanego dialektu i zestawu znaków 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))

Czy to jest związane z johntron.com/creations/csv-to-json
— David

Nie, z wyjątkiem tego, że używane są te same biblioteki (csv, json). Napisałem swój kod od zera. Pętle są wymagane do przetwarzania, które chciałem zrobić (konwersja zestawu znaków i zastępowanie pustych ciągów przez null).
— Tronic

Zastanawiam się nad konfliktem między wieloma komentarzami, które mówią „to zadziałało dla mnie”, a tym, który twierdzi, że „żadne z istniejących rozwiązań nie zadziałało”.
— B. Clay Shannon

4

Zamiast kodowanych na stałe konwerterów, co powiesz na obsługę CSV dla Jacksona (procesor JSON): https://github.com/FasterXML/jackson-dataformat-csv . Więc core Jackson może czytać JSON jako POJO, Mapy,JsonNode , prawie wszystko. Obsługa CSV może zrobić to samo z CSV. Połącz oba, a jest to bardzo potężny, ale prosty konwerter między wieloma formatami (istnieją już backendy dla XML, YAML i więcej).

Artykuł, który pokazuje, jak to zrobić, można znaleźć tutaj .


3

Sprawdź, czy to pomoże: Wróć do CSV - Konwertuj tekst CSV na obiekty; przez JSON

To jest wpis na blogu opublikowany w listopadzie 2008 roku, który zawiera kod C # w celu dostarczenia rozwiązania.

Od wprowadzenia w poście na blogu:

Ponieważ Json jest łatwiejszy do czytania i pisania, a następnie Xml. Wynika z tego, że CSV (wartości oddzielone przecinkami) jest łatwiejszy do odczytania i zapisu niż Json. CSV zawiera również narzędzia, takie jak Excel i inne, które ułatwiają pracę i tworzenie. Jeśli więc kiedykolwiek zechcesz utworzyć plik konfiguracyjny lub plik danych dla swojej następnej aplikacji, oto kod do konwersji CSV na JSON do obiektów POCO


1
dzięki. chory muszę przenieść to na java, ale lepiej niż próba ponownego wynalezienia koła
— mkoryak

cieszę się, że działa, c # -> java i tak jest całkiem niezłe.
— qxotk
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.