json转储不包含属性名称

时间:2018-11-10 05:20:07

标签: python json

我正在编写一个python lambda函数,该函数从s3读取一个json文件,然后将其中一个节点发送给另一个lambda函数。这是我的代码:

我想要的json代码段

"jobstreams": [
    {
      "jobname": "team-summary",
      "bucket": "aaa-bbb",
      "key": "team-summary.json" 
    }

步骤1 – 将JSON转换为python对象以进行处理 注意:这些是我从另一个Stack Overflow大师那里获得的-谢谢!

def _json_object_hook(d): return namedtuple('X', d.keys())(*d.values())
def json2obj(data): return json.loads(data, object_hook=_json_object_hook)

routes = json2obj(jsonText)

第2步-然后,我遍历python对象并找到所需的json并将其转储

for jobstream in jobstreams:
    x = json.dumps(jobstream, ensure_ascii=False)

但是,当我打印出来时,我只有值而不是属性。为什么会这样?

print(json.dumps(jobstream, ensure_ascii=False))

收益

  

[“ team-summary”,“ aaa-bbb”,“ team-summary.json”]

2 个答案:

答案 0 :(得分:0)

我假设您的完整json文件看起来类似于示例中的

import json

js = {"jobstreams": [
    {
      "jobname": "team-summary",
      "bucket": "aaa-bbb",
      "key": "team-summary.json" 
    },
    {
      "jobname": "team-2222",
      "bucket": "aaa-2222",
      "key": "team-222.json" 
    }
]}

def extract_by_jobname(jobname):
    for d in js['jobstreams']:
        if d['jobname'] == jobname:
            return d


json.dumps(extract_by_jobname("team-summary")) 
# '{"jobname": "team-summary", "bucket": "aaa-bbb", "key": "team-summary.json"}'

答案 1 :(得分:0)

我最终从json.dumps给我的列表中创建了一个新的Dictionary。

["team-summary", "aaa-bbb", "team-summary.json"]

一旦我有了新的字典(平坦的),然后将其转换为json ....可能不是最有效的方法,但是我还有其他鱼可以油炸。感谢大家的帮助!