2017-03-20 1 views
3

죄송합니다. 저는 json 응답의 일부를 인쇄하는 만족스러운 답변을 찾을 수 없습니다. 누군가가 여기 제발 도와 드릴까요 : 값 :TypeError : JSON 객체는 'dict'가 아닌 str이어야합니다.

import json 
import requests 
import pprint 

response = requests.get('<api endpoing>') 
json_data = response.json() 
print(json.dumps(json_data, indent=4, sort_keys=True)) 

JSON 응답 지금

{ 
    "Value1": "SomeValue", 
    "data": { 
     "subval1": false, 
     "subval2": "0a4", 
     "subval3": "", 
     "subval4": "Click h!", 
     "subval5": "1002", 
     "subval6": "932", 
     "subval7": "i2", 
     "subval8": 250, 
     "subval9": 0, 
     "subval10": 1, 
     "subval11": 3, 
     "subval12": 1, 
     "subval13": "<!>", 
     "subval14": "", 
     "subval15": "Click !!", 
     "subval16": "", 
     "subval17": 300 
    }, 
    "error": true, 
    "message": "Success", 
    "status": 200 
} 

것, 난 단지 "데이터"를 통과하고 인쇄하고 싶습니다. 형식 오류 : 나는

data = json.loads(json_data) 
data_set = (data['data']) 
print(data_set) 

그러나 오류를 다음과 임 점점 할 것 JSON 객체 str에해야하지 '딕셔너리'를

+1

'json_data'유형을 확인하십시오. 이미 dict 인 경우 json을 디코딩하지 마십시오. –

답변

6

이미 파이썬 사전이므로 json.loads(json_data)은 필요하지 않습니다.이 딕트를 직접 출력하면됩니다. 그리고 dict에서 json 문자열을 출력하는 것은 json.dumps()의 작업입니다.

json.dumps(json_data["data"]) 
+0

아! 고마워요! 나는 그 유형을 확인 했어야했다. 학습 일. –

0

는 사실 json() 방법은 JSON 객체를 반환, 그렇지 있도록 json.loads

를 사용할 필요가 또는 당신은

r=requests.get("") 
print json.loads(r.content) 

는,195에서 자세한 내용을 참조하십시오 사용할 수 있습니다.

관련 문제