【发布时间】:2018-08-25 08:27:01
【问题描述】:
我遇到了一个简单的问题:
我通过urllib 得到一个 JSON 应用列表,看起来像这样:
"completedapps" : [ {
"starttime" : 1520863179923,
"id" : "app-20180312145939-0183",
"name" : "IE_Traitement_3",
"cores" : 1,
"user" : "root",
"memoryperslave" : 1024,
"submitdate" : "Mon Mar 12 14:59:39 CET 2018",
"state" : "FINISHED",
"duration" : 212967
}, {
"starttime" : 1520863398147,
"id" : "app-20180312150318-0186",
"name" : "IE_Traitement_3",
"cores" : 1,
"user" : "root",
"memoryperslave" : 1024,
"submitdate" : "Mon Mar 12 15:03:18 CET 2018",
"state" : "FINISHED",
"duration" : 6321
}, {
"starttime" : 1520863387941,
"id" : "app-20180312150307-0185",
"name" : "IE_Traitement_0A",
"cores" : 1,
"user" : "root",
"memoryperslave" : 1024,
"submitdate" : "Mon Mar 12 15:03:07 CET 2018",
"state" : "FINISHED",
"duration" : 149536
}, { ... }]
我想获取名为“IE_Traitement_OA”的应用程序的最新元素,所以我开始像这样过滤我的 JSON:
[app for app in parsedjson['completedapps'] if app['name'] == "IE_Traitement_OA"]
但我现在卡住了,我不知道如何获得最新的“应用程序”?我想我必须使用starttime 或submitdate 字段,但我不知道如何处理。你能帮帮我吗?
【问题讨论】:
-
JSON 数据直到被转换为字典结构。字典本质上不是一个有序的结构。如果要保留订单,则需要使用 OrderedDict 转换它们。
-
好的,我已经更新了我的 json.load 方法来添加参数“object_pairs_hook=OrderedDict”,但是接下来呢?