私は最近、django JSON フィールド、YAML フィールド、Python フィールドを構築して、CMS を介してデータの任意の複雑な階層を保存/編集する方法を探っています。
JSON、YAML、および Python はすべて、直感的に理解できるように人間がフォーマットすることができますが、テキストを強制的に Python に変換して戻すとすぐに、順序付けされていない新しいオブジェクトが作成されます。
元の入力を再構築するためにデータが実際に順序付けられていなくても、「人間」がそれを構築することを決定した場合でも、入力順序を透過的に保持するポータブルデータスキームはありますか?
たとえば、python/json:
[{
'title': 'First Data Entry!', # intuitive to have certain elements at top
'is_active': True,
'data': 'data here'
'a_list': [1, 2, 3],
},
{
'title': 'Some Data Entry Here!',
'is_active': False,
'data': 'data here'
'a_list': [1, 2, 3],
}]
または YAML:
私は自分の目ですぐに認識できるようにデータを設定することができます。たとえば、タイトルを慣例により最初の行に設定できます。
これを python オブジェクトに解析し、変更して、再び YAML/JSON/Python に変換するとすぐに、もちろんコメントや順序はなくなります。
これが一般的な問題なのか、それとも私が発明する必要がある車輪なのか、興味があります。シリアライザーを作成することで可能と思わOrderedDict
れます(これは私がやったことがありません...)。
私の現在の解決策は、YAML を読み取り専用の生のテキスト フィールドとして使用することです。スタイルを維持するために Python オブジェクトを YAML に書き込もうとしません。