2013-02-28 5 views
1

일반적으로 병을 사용하여 만든 내 webservice는 JSON 파일을 반환하므로 정상적으로 작동합니다. 그러나 로컬 함수를 호출해야한다는 예외가 있습니다. 여기파이썬에서 JSON 객체 가져 오기

내가 어떻게 뭘하려 :

import json 
def getData(): 
    return json.dumps({'data': someData }) 

def function(): 
    try: 
     # Fail 
    except: 
     print getData() 
     print type(getData()) 
     json.load(getData()) 

는 그래서 인쇄 :

{"data": "myData"} 
<type 'str'> 
[...] 
AttributeError: 'str' object has no attribute 'read' 

그래서 json.dumps 나에게 문자열을 제공합니다. 어떻게 JSON으로 사용할 수 있습니까?

+0

먼저 'json'앞에 'return'이 있습니까? –

+0

죄송합니다. 간단하게 작성했습니다. 나는'return'을 잊었다. – Arthur

+2

'someData'는 이미'someData'에 액세스하는'dict()'입니다 ... 최소한이어야합니다. 문자열이라면'json.load()'를 호출해야합니다. – Cfreak

답변

5

json.load은 파일 객체에서 JSON을로드합니다.

json.loads 문자열에서로드합니다. 이것이 당신이 원하는 것입니다.

+0

간단한 답이 있음을 알고있었습니다. 고맙습니다. – Arthur

+0

기술적으로는 파일과 비슷한 객체 (read() 메소드 사용)이기 때문에 다음과 같이 작동합니다 :'json.load (StringIO ('[ "streaming API"]'))'' –

2

json.load 대신 json.loads을 사용하십시오. docs에 따라

관련 문제