2016-11-27 2 views
0

JSON을 파이썬으로 디코딩하려고합니다. 다음은 JSON이 어떻게 생겼는지를 보여주는 간단한 스 니펫입니다. Python으로 JSON을 디코딩하는 방법은 무엇입니까?

b'{"success":true,"data":[{"id":26,"name":"A","comment":"","start_time_plan":null,"start_time_actual":"2016-09-13 00:00:00","start_time_delta":null,"start_time_score":null,"start_time_score_achievement":null,"start_time_traffic_light":null,"end_time_plan":null,"end_time_actual":"2016-09-13 00:00:00","end_time_delta":null,"end_time_score":null,"end_time_score_achievement":null,"end_time_traffic_light":null,"status":0,"measure_schedule_revision_id":63,"responsible_user_id":3,"created_time":"2016-09-13 11:29:14","created_user_id":3,"modified_time":"2016-09-21 16:33:41","modified_user_id":3,"model":"Activity"},{"id":27,"name":"B","comment":"","start_time_plan":null,"start_time_actual":"2016-09-13 00:00:00","start_time_delta":null,"start_time_score":null,"start_time_score_achievement":null,"start_time_traffic_light":null,"end_time_plan":null,"end_time_actual":"2016-09-13 00:00:00","end_time_delta":null,"end_time_score":null,"end_time_score_achievement":null,"end_time_traffic_light":null,"status":0,"measure_schedule_revision_id":63,"responsible_user_id":3,"created_time":"2016-09-13 11:29:48","created_user_id":3,"modified_time":"2016-10-16 18:14:36","modified_user_id":1,"model":"Activity"} 

나는 start_time_deltaend_time_delta의 보류를 얻을 약간의 산포도를 생산하기 위해 노력하고 있습니다. 하지만 어떻게 든 JSON을 디코딩 할 수 없습니다. ,

방법 올 str에 있지 바이트 지수는 정수 또는 조각이어야합니다

#falcon api 
u = 'https://myurl.com' 

#urllib3 + poolmanager for requests 
import urllib3 
http = urllib3.PoolManager() 

import json 
r = http.request('GET', u) 
json.loads(r.data.decode('utf-8')) 

end = json.loads(r.data['end_time_delta']) 
start = json.loads(r.data['start_time_delta']) 

이것은 내가 오류는 다음과 같습니다

내가 할 무엇인가? 어떻게 문제를 해결할 수 있습니까?

+0

고려하십시오 : 당신이 그 목록에있는 모든 사전 위해 그 데이터 포인트를 추출해야하는 경우

, 당신은 루프를 사용해야 할 것입니다 // docs.python-requests.org/en/master/) 모듈은 자동으로 풀링을 처리하고 요청에 의해 반환 된 JSON을 구문 분석하는 아주 간단한 방법을 제공합니다. – pzp

답변

3

현재 json.loads()의 반환 값을 무시하고 있습니다 :

json.loads(r.data.decode('utf-8')) 

그런 다음 같은 원시 다시를 해독하려고 디코딩 파이썬 결과로 그것을 사용하려고합니다. 번 json.loads()를 호출하고, 결과 파이썬 사전 사용 결과의, 나는 그 중 첫 번째에 도착 0을 사용하는 목록에 최상위 사전 'data' 키 점 때문에

result = json.loads(r.data.decode('utf-8')) 
start = result['data'][0]['start_time_delta'] 
end = result['data'][0]['end_time_delta'] 

을하고 데이터를 추출 네가 원해. 에서 [`requests`] (HTTP를 사용하여 또한

for entry in result['data']: 
    start = entry['start_time_delta'] 
    end = entry['end_time_delta'] 
    # do something with these two values, before iterating to the next 
+0

아 ... 나는 정말 바보 야! 고맙습니다! 이제 JSON을 통해 '0'에서 'n'까지 반복 할 수 있을까요? – Rachel

+1

@Rachel : 파이썬 루프는 foreach 구조체이므로 시퀀스의 포함 된 요소에 직접 액세스 할 수있을 때 인덱스를 사용할 필요가 없습니다. –