[英]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.