首页 > 解决方案 > 如何从 JPATH 构造 JSON

问题描述

我正在解析一个文本文件,其中包含我想从中构造 JSON 的 json 路径列表。

我就是这样开始的。

def construct_json(jpath):
    tokens = jpath.strip().split('.')
    json = ''
    for token in tokens:
        if len(token.split('=')) == 2:
            json = json + '"' + token.split('=')[0] +'"' + ':' + '"' + token.split('=')[1] + '"}}}}'
        else:
            json = json + '"'+token+'":{'
    return '{'+json

jpaths_text = 'quiz.sport.q1.question=Which one is correct team name in NBA?,quiz.sport.q1.question=Which one is correct team name in Soccer?'
jpaths = jpaths_text.split(',')

questions = []
for jpath in jpaths:
    questions.append(construct_json(jpath))

print questions

上面的程序给了我以下输出:

['{"quiz":{"sport":{"q1":{"question":"Which one is correct team name in NBA?"}}}}', '{"quiz":{"sport":{"q1":{"question":"Which one is correct team name in Soccer?"}}}}']

我想要的都q1在列表中。类似于以下内容:

{
    "quiz": {
        "sport": {
            "q1": [{
                "question": "Which one is correct team name in NBA?"
            }, {
                "question": "Which one is correct team name in Soccer?"
            }]
        }
    }
}

任何帮助/线索将不胜感激。谢谢。

标签: pythonjson

解决方案


好吧,如果该结构与该示例的结构相同,那么您可以使用以下内容:

ls = ['{"quiz":{"sport":{"q1":{"question":"Which one is correct team name in NBA?"}}}}',
      '{"quiz":{"sport":{"q1":{"question":"Which one is correct team name in Soccer?"}}}}']

d = {"quiz": {
    "sport": {
        "q1": []
    }

}}
for dic in ls:
    q1 = json.loads(dic).get('quiz').get('sport').get("q1")
    d.get('quiz').get('sport').get('q1').append(q1)

print(d)

推荐阅读