2016-06-27 3 views
1

이 문제와 관련된 해결책을 찾고 난 이해할 수있는 것을 찾지 못했습니다. 나는 Python을 처음 사용하기 때문에 오류 메시지가 나타나는 이유를 이해하는 데 필요한 기본적인 도움이 필요하다. TypeError : JSON을 직렬화 할 수 없다.JSON을 파이썬을 사용하는 텍스트 파일

import requests 
import json 

r = requests.get("http://api.bls.gov/publicAPI/v2/timeseries/data/LAUCN040010000000005") 

with open("C:\...MyPath...\Output.txt", "w") as outfile: 
    json.dumps(r, outfile) 

이것은 테스트중인 간단한 코드입니다. 도움에 감사드립니다.

+0

'r'은 JSON 객체가 아닙니다. 당신은 json이 아닌 것을 덤프 할 수 없습니다. 그러나 먼저 bls 문자열을 JSON 객체로 파싱 한 다음 덤프 할 수 있습니다. 그래도 나는 그다지 의미가 없다. –

+0

with 블록 내 json.dumps도 들여 쓰기해야합니다. – Tommy

답변

2

json으로 /에서 변환 할 필요가 없습니다. 그냥 텍스트로 유지하십시오.

import requests 

r = requests.get("http://api.bls.gov/publicAPI/v2/timeseries/data/LAUCN040010000000005") 

with open("C:\Users\mhoward2\Documents\Python Scripts\Output.txt", "w") as outfile: 
    outfile.write(r.text) 
+0

대단히 고맙습니다.> 이제 내 하드 드라이브에 일부 JSON이 있습니다. 저는 지난 몇 년 동안 stackoverflow에서 많은 것을 배웠습니다 ... VBA ... SQL ... 그리고 이제 Python. 이것은 제가 지금까지 물어 본 첫 번째 질문입니다. – Requiesit

+0

기꺼이 도와 드리겠습니다. –

1

당신은 .json()를 호출 할 필요가dump하거나 내용 쓰기 :

r = requests.get("http://api.bls.gov/publicAPI/v2/timeseries/data/LAUCN040010000000005") 

with open("C:\Users\mhoward2\Documents\Python Scripts\Output.txt", "w") as outfile: 
    outfile.write(r.content) 

당신이 현재 작성하려고하는 것은 :

<Response [200]> 

인을 requests.models.Response 개체입니다.

+0

'content'는 응답을 바이트로 액세스 할 수있게 해주기 때문에'open'에 대한 호출은'w' 대신'wb'가되어야합니다 –

+0

@iliacholy, python2가 아닙니다. –

+0

무엇을 의미합니까? (당신이 틀렸다고 말하는 것은 아닙니다, 호기심이 아닙니다) –

관련 문제