2016-10-10 15 views
0

私はcsvからjsonへの変換を使用していますが、オブジェクトの順序を乱してしまいます。私は別の変換スクリプトを試しましたが、彼らはすべて注文を混乱させます。私のcsvファイルは次のように命じている :オブジェクトの順序jsonファイル

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

しかし、変換後、それは次のようになります。私は含まれてい

[{ 
    "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" 
}] 

[{ 
    "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" 
}] 

私はこのようにそれを持ってしたいと思いますここのコードは面倒な質問ではありません。https://codeshare.io/B0KyP

答えはここにあります:Items in JSON object are out of order using "json.dumps"?しかし、私はそれを働かせることはできません。

更新: まだ動作していません。すべてのソリューションは、JSONファイルのロードについてです。私の場合、私はJSONファイルをロードしません。新しい作成されたJSONファイルにデータをダンプします。

+0

の可能性のある重複した[JSONオブジェクト内の項目は、 "json.dumps" を使用して順不同であります?](http://stackoverflow.com/questions/10844064/items-in- json-object-are-of-order-using-json-dumps) – glibdud

+0

私はそれをそのように動作させることができないので、別の解決法がありますか? sort_keys = Trueは動作しますが、アルファベット順ではありません。ヘッダーが変更される可能性があるため、CSVファイルから読み取ったカスタム注文が必要です –

+0

2番目の例(OrderedDict)を見てください。 – glibdud

答えて

0

使用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) 
関連する問題