2016-07-28 16 views
1

Ich habe eine Csv wie diese Beispieldatei:Wie kann ich CSV in JSON-Datei in diesem Formular konvertieren?

0 -8,396 13,414 -35,891 39,22489124 
1 -8,789 12,768 -35,891 39,09516883 
2 -9,136 12,768 -35,891 39,17463722 
3 -9,614 12,768 -35,891 39,2888623 
4 -9,614 12,397 -36,282 39,52844709 
5 -9,614 12,397 -36,282 39,52844709 

Ich brauche es in eine JSON-Datei in dieser Form zu konvertieren:

{"0": [-12.770680147058824, 1.846047794117647, -54.265625, 55.77863587895704], 
"1": [-18.388229927007298, 6.5360401459854014, -52.65647810218978, 56.156491225545878], 
"2": [-20.042738970588236, 12.849264705882353, -46.678308823529413, 52.399231898471129], 
"3": [-38.242244525547449, 15.836222627737227, -40.48357664233577, 57.897972254845804], 
"4": [-33.016879562043798, 6.3001824817518246, -38.179288321167881, 50.867127813832226]} 

Haben Sie eine Ahnung, wie kann ich das tun?

+0

Was haben Sie bisher versucht? Bitte zeigen Sie Ihren Code. – Soviut

Antwort

1

versuchen, dieses Tool zu verwenden: http://www.convertcsv.com/csv-to-json.htm

ein wenig mit den Parametern spielen ...

+1

Können Sie einen zusätzlichen Hinweis geben? – fao

+1

Wegbeschreibung: Sie müssen möglicherweise Ihre Kommas in Ihren Eingaben abhängig von Ihren Gebietsschemaeinstellungen ändern. 1. Fügen Sie Ihre Daten in den Eingabebereich ein. 2. Eingabefunktionen - Feldtrennzeichen ist Leerzeichen und Entfernen der ersten Zeile ist Kopfzeile 3. In Schritt 4 Template-Set Top zu sein {lb} {br}, Wiederholungsabschnitt zu "{f1}": [{f2}, {f3 }, {f4}, {f5}] und Bottom als {br} {rb}, dann drücken Sie Csv über Vorlage in JSON konvertieren. – dataman

+0

@dataman - ausgezeichneter zusätzlicher Hinweis :) –

0

Es dies ist hart zu beantworten, ohne die Sie verwenden, welche Sprache zu wissen, sollte aber die allgemeine Idee gleich sein für die meisten. Ich würde den Ansatz, die CSV-Datei in Zeile für Zeile etwas zu lesen wie:

JSONObject jsn = new JSONObject() 
    for(line in csvfile){ 
     List lst = new ArrayList(); 
     String[] temp = line.split(","); //as it should be comma separated 
     for(int i=1;i<temp.len;++i){ 
      lst.add(temp[i]); 
     } 
     jsn.put(temp[0], list); 
    } 

Dies ist nur ein sudo Codebeispiel, aber Sie sollten den Punkt.

0

Sie können diese CSV to JSON Converter verwenden, um zu tun, was Sie wollen.

Klicken Sie auf die Beispiele und wählen Sie dann Headerless Indexed. Das wird ein Beispiel basierend auf diesem Problem laden. Dann klicken Sie auf Konvertieren. Die Haupteinstellung, die diese Konvertierung steuert, ist ein AusgabetypDictionary Array.

PS: Ihre Eingabe ist in Bezug auf die Trennzeichen (Leerzeichen von 1 bis 3 Zeichen) etwas inkonsistent. Ich vermute, dass es ein Ergebnis des Kopierens war, das es hier einfügt, und dass die ursprüngliche Datei Registerkarten als Begrenzer hat.

Haftungsausschluss: Ich habe dieses Tool gebaut.

0

Hier ist eine Lösung jq

reduce (
    split("\n")[]   # split string into lines 
    | split("\t")    # split into columns 
    | select(length>0)  # eliminate blanks 
    | map(gsub(",";"."))  # change decimal character 
) as $r (
    {} 
; .[$r[0]] = $r[1:]   # build requested result 
) 

Wenn filter.jq dieses Filter enthält und data enthält Tabulatorzeichen getrennten Daten

0 -8,396 13,414 -35,891 39,22489124 
1 -8,789 12,768 -35,891 39,09516883 
2 -9,136 12,768 -35,891 39,17463722 
3 -9,614 12,768 -35,891 39,2888623 
4 -9,614 12,397 -36,282 39,52844709 
5 -9,614 12,397 -36,282 39,52844709 

die Abtastdaten dann

$ jq -M -R -r -s -f filter.jq data | \ 
    sed -e ':a' -e 'N' -e '$!ba' \ 
     -e 's/",\n /",/g' \ 
     -e 's/\[\n /\[/g' \ 
     -e 's/\n \]/\]/g' 

produziert

Verwendung
{ 
    "0": [ "-8.396", "13.414", "-35.891", "39.22489124"], 
    "1": [ "-8.789", "12.768", "-35.891", "39.09516883"], 
    "2": [ "-9.136", "12.768", "-35.891", "39.17463722"], 
    "3": [ "-9.614", "12.768", "-35.891", "39.2888623"], 
    "4": [ "-9.614", "12.397", "-36.282", "39.52844709"], 
    "5": [ "-9.614", "12.397", "-36.282", "39.52844709"] 
} 

Beachten Sie, dass die sed am Ende nur kompakter JSON für dieses Stack Overflow Beispiel darstellt.