簡體   English   中英

在Python中合並JSON,替代eval()?

[英]Merging JSON in Python, alternate to eval()?

假設我正在處理字典中的以下兩個(或更多)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”},{“ object”:“ info:fedora / book:altoXML”},{“ object”:“ info:fedora / book:thumbs”},{“ object”:“ info:fedora / book:originals“}]}'

我想創建一個合並的JSON字符串,以“ context”和“ query”作為根級別密鑰。 像這樣:

{“ 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

有什么想法嗎? 建議?

您可以在第一個示例中使用json.loads()代替eval()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM