0

辞書から次の 2 つ (またはそれ以上) の JSON 文字列を扱っているとします。

JSONdict['context'] = '{"Context":"{context}","PID":"{PID}"}'

JSONdict['RDFchildren'] = '{"results":[ {"object" : "info:fedora/book:fullbook"} ,{"object" : "info:fedora/book:images"} ,{"object" : "info:fedora/book:HTML"} ,{"オブジェクト" : "info:fedora/book:altoXML"} ,{"オブジェクト" : "info:fedora/book:thumbs"} ,{"オブジェクト" : " info:fedora/book:originals"} ]}'

「コンテキスト」と「クエリ」をルート レベル キーとして、結合された JSON 文字列を作成したいと考えています。このようなもの:

{"context": {"PID": "wayne:campbellamericansalvage", "Context": "object_page"}, "RDFchildren": {"results": [{"object": "info:fedora/book:fullbook"} , {"object": "info:fedora/book:images"}, {"object": "info:fedora/book:HTML"}, {"object": "info:fedora/book:altoXML"}, { "object": "info:fedora/book:thumbs"}, {"object": "info:fedora/book:originals"}]}}

eval()以下は動作しますが、できれば使用を避けたいです。

    # using eval
    JSONevaluated = {}
    for each in JSONdict:
        JSONevaluated[each] = eval(JSONdict[each])
    JSONpackage = json.dumps(JSONevaluated)

この方法でも機能しますが、ハックのように感じます。より現実的なメタデータが通過するにつれて、エンコードとエスケープが問題になるのではないかと心配しています。

    #iterate through dictionary, unpack strings and concatenate
    concatList = []
    for key in JSONdict:        
        tempstring = JSONdict[key][1:-1] #removes brackets
        concatList.append(tempstring)           

    JSONpackage = ",".join(concatList) #comma delimits
    JSONpackage = "{"+JSONpackage+"}" #adds brackets for well-formed JSON

何かご意見は?アドバイス?

4

1 に答える 1