2016-10-10 1 views
0

Ich verwende einen CSV zu JSON-Konverter, aber es vermasselt meine Reihenfolge der Objekte. Ich habe verschiedene Converting-Skripte ausprobiert, aber alle haben die Reihenfolge durcheinander gebracht. Meine csv wird wie folgt bestellt:Reihenfolge der Objekte JSON-Datei

Group-of-Signals name,Group-of-Signals description,Signal name,Signal data type,Signal unit of measurement,Signal description,Signal ID,Signal index 

Aber nach der Konvertierung sieht es dies wie:

[{ 
    "Signal ID": "-1", 
    "Group-of-Signals description": "", 
    "Signal index": "0", 
    "Signal name": "EUVPulseCount", 
    "Signal unit of measurement": "M", 
    "Signal data type": "SDT_STRING", 
    "Signal description": "", 
    "Group-of-Signals name": "DPI_0" 
}] 

Ich mag würde es so haben:

[{ 
    "Group-of-Signals name" : "DPI_0", 
    "Group-of-Signals description" : "", 
    "Signal name" : "EUVPulseCount", 
    "Signal data type" : "SDT_STRING", 
    "Signal unit of measurement" : "M", 
    "Signal description" : "", 
    "Signal ID" : "-1", 
    "Signal index" : "0" 
}] 

I enthalten sind, der Code hier, so wird es keine chaotische Frage sein: https://codeshare.io/B0KyP

Ich überprüfe ed die Antwort, die hier ist: Items in JSON object are out of order using "json.dumps"? aber ich kann es nicht zur Arbeit bringen.

UPDATE: Ich habe immer noch nicht funktioniert. Bei allen Lösungen geht es darum, eine JSON-Datei zu laden. In meinem Fall lade ich keine JSON-Datei. Ich dump Daten in einer neu erstellten JSON-Datei.

+0

Mögliche Duplikat [? Angebote im JSON-Objekt sind out of order "json.dumps" mit] (http://stackoverflow.com/questions/10844064/items-in- json-object-out-of-order-using-json-dumps) – glibdud

+0

Gibt es eine andere Lösung, weil ich es so nicht funktionieren kann. sort_keys = True funktioniert, aber ich möchte es nicht alphabetisch sortiert haben. Ich möchte eine benutzerdefinierte Reihenfolge, die aus der CSV-Datei gelesen wird, da die Header möglicherweise ändern –

+0

Schauen Sie sich das zweite Beispiel (OrderedDict). – glibdud

Antwort

0

Verwendung OrderedDict:

import csv 
import json 
from collections import OrderedDict 

def whatever(filename): 
    r = [] 
    with open(filename, 'r') as fp: 
     reader = csv.reader(fp) 
     headers = next(reader) 
     for row in reader: 
      data = OrderedDict(zip(headers, row)) 
      r.append(data) 
    return json.dumps(r) 
Verwandte Themen