繁体   English   中英

在 Python 中解析 JSON 数组以创建分隔字符串

[英]Parsing JSON array in Python to create a delimited string

全新的 Python 并尝试解析如下所示的 JSON 数组:

[
  {"Event":"start","EventDateTime":"2015-09-15T03:45:16.681428Z"},
  {"Event":"process","EventDateTime":"2015-09-15T03:45:16.681428Z"},
  {"Event":"end","EventDateTime":"2015-09-15T03:45:16.681428Z"}
]

我需要输出在字符串制表符分隔字段和新行分隔行上,如下所示:

start \t 2015-09-15T03:45:16.681428Z \n
process \t 2015-09-15T03:45:16.681428Z \n
end \t 2015-09-15T03:45:16.681428Z 

这是我到目前为止的代码:

          import json
      if not j or not i:
        return None
      try:
        arr = json.loads(j)
      except ValueError:
        return None
      if len(arr) <= 0:
        return None
      row=i
      for li in arr
        elem = json.loads(li, object_pairs_hook=collections.OrderedDict)
        row=row + '\t' + elem.Key + '\t' + elem.Value + \n
      return row

首先我得到,缩进错误,固定缩进,但得到关于“集合”未定义的错误。

有没有办法在不使用这些集合的情况下做我需要的事情。 当我删除集合对象时,我会收到其他错误。

谢谢!!

import json    

j = """[
  {"Event":"start","EventDateTime":"2015-09-15T03:45:16.681428Z"},
  {"Event":"process","EventDateTime":"2015-09-15T03:45:16.681428Z"},
  {"Event":"end","EventDateTime":"2015-09-15T03:45:16.681428Z"}
]"""

j = json.loads(j)
for item in j:
    print '%s\t%s' % (item['Event'], item['EventDateTime'])

怎么样:

    j = '''[
{"Event":"start","EventDateTime":"2015-09-15T03:45:16.681428Z"},
    {"Event":"process","EventDateTime":"2015-09-15T03:45:16.681428Z"},
      {"Event":"end","EventDateTime":"2015-09-15T03:45:16.681428Z"}
      ]
      '''
import json
content = json.loads(j)
keys = content[0].keys()
for i in content:
    print(' \t '.join([i[k] for k in keys]) + '\n')

鉴于 OP 正在使用 OrderedDict 钩子,那么您可以在不参考名称的情况下可靠地执行此操作:

arr = json.loads(j, object_pairs_hook=collections.OrderedDict)
for item in arr:
    print(' \t '.join(item.values()))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM