-1

PythonのSTLでjsonをいじって、これを思いついた..

import json as j

cred = j.dumps({'Name': 'John Doe', 'Occupation': 'Programmer'},
            sort_keys = True,
            indent = 4,
            separators = (',', ': '))

_f = open('credentials', 'w')
_f.write(cred)
_f.close()

出力は以下で、すべて問題ありません..

{

  "Name": "John Doe",
  "Occupation": "Programmer"

}

しかし、私は誤ってこのように名前を小文字で入力しました..

cred = j.dumps({'name': 'John Doe', 'Occupation': 'Programmer'},
            sort_keys = True,
            indent = 4,
            separators = (',', ': '))

そして結果はこれでした..

{

  "Occupation": "Programmer",
  "name": "John Doe" 

}


jsonは渡された値の書き込み/出力順序をどのように決定しますか?大文字は小文字よりも優先されますか?

4

1 に答える 1

2

PythonディクショナリとJSONオブジェクトには順序がありません。表示される順序は任意であり、いつでも変更される可能性があります。順序をJSONで保存する場合は、オブジェクトの代わりに配列を使用する必要があります。

sort_keysある種の出力順序を保証しているように見えますが、それは人間にとって読みやすくするためだけの可能性があります。JSONを読み取るコンピューターは、フィールドの順序を気にする必要はありません。

于 2012-12-31T00:57:32.600 に答える