我最近构建了一个 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 以保留样式。