如何在Python中解析JSON数组

时间:2015-07-29 20:54:15

标签: python json

我的JSON数组如下,我想建立一个相应输出的新字符串。

我有一个简单的函数,只是为了看看我是否可以返回一个值,但是它失败了Error was expected string or buffer

def blah(myjson):
    data = json.loads(myjson)
    for item in data:
        result = item['svn_tag']

    return result

JSON:

[{'svn_tag': '20150623r3', 'module': 'api'}, {'svn_tag': '20150624r1', 'module': 'ui'}]

建议输出:

api - 20150623r3, ui - 20150623r3

1 个答案:

答案 0 :(得分:1)

问题是json想要用双引号而不是单引号编码的字符串和字段名称。因此,要么手动替换单引号,要么使用ast.literal_eval,因为字符串也是python有效文字:

import ast

def blah(myjson):
    data = ast.literal_eval(myjson)
    return ', '.join(item['module'] + ' - ' + item['svn_tag'] for item in data)

s = '''[{'svn_tag': '20150623r3', 'module': 'api'}, {'svn_tag': '20150624r1', 'module': 'ui'}]'''
print blah(s)

结果:

api - 20150623r3, ui - 20150624r1