2010-12-31 2 views
19

HTTP POST를 사용하여 데이터를 보내는 일부 코드의 문제를 해결하고 내용이 사전 인 JSON 결과를 반환해야합니다. 이 서비스를 노출하기 위해 XML-RPC 래퍼를 사용하고 있습니다. 나는 다음과 같은 문을 사용하여 JSON 결과로 아래의 문자열을 변환하기 위해 노력하고있어json.loads를 통해 JSON에 대한 Python dict :

{'created': datetime.datetime(2010, 12, 31, 19, 13, 8, 379909), 'worker': u'GoogleWorker', 'ready': False, 'request_id': '8f1381853a444a42a37ae5152a3af947', 'owner': u'admin', 'shortname': u'test19'} 

: 래퍼는 HTTP 응답 변수에서 DICT 정보를 수신 할 때, DICT 내용이 양식의 문자열에

내가 JSON으로 데이터를 변환 할 json.loads를 사용하려고 할 때
result = json.loads(response[1]) 

는, 나는 다음과 같은 오류가 발생합니다 : Fault: <Fault 1: "<type 'exceptions.ValueError'>:Expecting property name: line 1 column 1 (char 1)">

내가 수동으로 JSON에 위의 문자열을 변환하려고하지만 같은 얻을 오류. dict이 어떤 식 으로든 형식이 잘못 되었습니까? 유니 코드 때문입니까? 로케일을 UTF-8로 설정하려고했지만 실패했습니다.

도움을 주시면 감사하겠습니다.

+0

여러분 모두 도와 주셔서 감사합니다. 장고 피스톤을 사용하는 API를 디버깅하려고하기 때문에 잘못된 질문을하고 있다는 것을 깨달았습니다. 이전에는 사용하지 않았습니다. 내 실제 질문은 django-piston과 관련이 있으며 응답이 HTTP CREATED (201) 일 때마다 내 응답의 Content-Type이 application/json 대신 text-plain으로 설정되는 이유는 무엇입니까? 원래 질문은 실제 문제와 관련이 없으므로 (JSON의 동작에 대한 답변은 흥미 롭습니다.), 별도의 질문으로 요청할 것입니다. –

답변

31

당신은 잘못된 방법을 사용하려고 :

+0

나는 이것을 실제로 알아 냈지만, 모든 코드를 자세히 살펴본 후에 잘못된 질문을하고 있음을 깨달았습니다. 내 질문은 django-piston과 관련이 있으며 응답이 HTTP CREATED (201) 일 때마다 내 응답의 Content-Type이 application/json 대신 text-plain으로 설정되는 이유는 무엇입니까? 저는 이것을 별도의 질문으로 요구할 것입니다. –

+1

이렇게하면 "NestedMultiDict는 json serializable이 아닙니다"라는 오류 메시지가 나타납니다. – zakdances

5

그 dict는 JSON이 아닌 Python dict 리터럴 형식입니다. 수행 할 수있는 작업은 다음과 같습니다.

import ast 
result = ast.literal_eval(response[1]) 

해당 형식으로 응답을 읽으십시오. 장고가 아직 응답을 JSON으로 디코딩하지 않았습니까?

import simplejson as json 
#to encode 
final= {'first':first_data,'second':second_data} 
json.dumps(final) 
#to decode this is the example from python's api 
json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]') 
+2

literal_eval은 datetime 개체에서 작동하지 않습니다. 하지만 당신이 뭔가 다른 것이 이미 파싱 중이라는 것이 맞다고 생각합니다. –

1

내가 내가 이것을 사용, 장고에 사용 JSON이있다. json.loads이고 JSON은 Python입니다. Python을 JSON으로 변환하려면 json.dumps이 필요합니다.

result = json.dumps(response[1]) 
관련 문제