python
  • json
  • eval
  • 2013-08-29 1 views 0 likes 
    0

    I는 사전에서 다음의 두 (또는 그 이상) JSON 문자열 다루는 야한다고 가정Python에서 JSON을 병합하면 eval()을 대체합니까?

    JSONdict [ '콘텍스트'] = "{"컨텍스트 ":"{문맥} ","PID " "{PID}"} '

    JSONdict ['RDFchildren '] ='{ "결과": [{ "개체" "정보 : 페도라/책 : fullbook"}, { "개체" "정보 : fedora/book : altoXML "}, {"object ": "정보 : fedora/book : HTML "}, {"object ": "info : info : fedora/book : thumbs "}, {"object ": "info : fedora/book : 원본 "}]} ''

    "context"와 "query"를 루트 레벨 키로 사용하여 병합 된 JSON 문자열을 만들고 싶습니다. 이런 식으로 뭔가 :

    { "컨텍스트": { "PID": "웨인 : campbellamericansalvage", "컨텍스트" "object_page"}, "RDFchildren": { "결과": [{ "개체" : "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 : originalals "}]}}

    다음 작품들,하지만 나는 피하고 싶습니다. 가능하면 eval().

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

    또한 이런 식으로 작업을 가지고 있지만 hackish 느낌이 나는 통해 오는 두려워 인코딩 및 이스케이프 더 사실적인 메타 데이터 등의 문제가 될 것이다 해요 :

    #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 
    

    어떤 생각? 조언?

    답변

    1

    첫 번째 예에서는 eval() 대신 json.loads()을 사용할 수 있습니다.

    +0

    굉장합니다. 감사합니다, 매력처럼 작동합니다. – ghukill

    관련 문제