2017-07-12 139 views
-2

我有一个我想排序的JSON字符串。我想按'Name'字段排序。我不能为我的生活找到这样做的代码。按键字以外的键排序JSON

未分类:

{"RU": {"Name": "Russian", "TextDirection": "ltr"}, "FR": {"Name": "French", "TextDirection": "ltr"}, "AR": {"Name": "Arabic", "TextDirection": "rtl"}}

排序:

{"AR": {"Name": "Arabic", "TextDirection": "rtl"}, "FR": {"Name": "French", "TextDirection": "ltr"}, "RU": {"Name": "Russian", "TextDirection": "ltr"}}

更新:

正如@乔恩rsharpe和@martineau指出。我需要使用数组或列表。我并不太在意结构。最初弄乱排序顺序的是转换为json。通过使用一个数组,json并没有使用排序顺序。

[{"Code": "AR", "Name": "Arabic", "TextDirection": "rtl"}, {"Code": "FR", "Name": "French", "TextDirection": "ltr"}, {"Code": "RU", "Name": "Russian", "TextDirection": "ltr"}] 
+0

JSON对象(和它们映射到Python字典)没有保证的顺序,所以它不是清楚你的意思。 – jonrsharpe

+0

@jonrsharpe:我删除了对键的引用。 – SteveB

+0

你为什么想要这个? –

回答

1

你可以让用户OrderedDict在Python中使用有序键实现一个字典。

但是,无法保证JSON对象将按其他应用程序的顺序加载,因为本质上没有字典排序(散列表)。

所以,迭代键不能保证顺序,除非你为Python和JavaScript使用特定的类,或者如果你把你的字典放到一个静态顺序的数组中。

https://docs.python.org/3/library/collections.html#collections.OrderedDict

How do I sort a list of dictionaries by values of the dictionary in Python?

+0

第二个链接与这个问题无关,没有涉及到的列表。 –

+0

这是以前在答案中给出的领导参考。 – Fabien