궁극적으로 파일에 저장해야하지만 내장 된 줄 바꿈 문자에 문제가있는 JSON 구조를 만듭니다.줄 바꿈 문자가 포함 된 문자열로 dict에서 JSON 문서를 만들 수 없습니다.
changes = {
"20161101": "Added logging",
"20161027": "Fixed scrolling bug",
"20161024": "Added summary functionality"
}
을 한 후 하나의 줄 바꿈 구분 된 문자열로 변환 :
내가 먼저 사전을 만드는, 그래서 좋은
changes_str = '\n'.join([ "{0} - {1}".format(x, y) for x, y in changes.items() ])
print changes_str
'20161101 - Added logging\n20161027 - Fixed scrolling bug\n20161024 - Added summary functionality'
지금까지. 지금은 문자열로 추가 (현실에있는 텍스트 템플릿에서 온 것입니다) :
json_obj = json.loads(changes_str_json_str)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/opt/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/opt/python2.7/json/decoder.py", line 380, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Invalid control character at: line 1 column 55 (char 54)
:
changes_str_json_str = '{ "version": 1.1, "changes": "' + changes_str + '" }'
print changes_str_json_str
'{ "version": 1.1, "changes": 20161101 - Added logging\n20161027 - Fixed scrolling bug\n20161024 - Added summary functionality }'
를하지만 만들 올 때 /이 사용 부하에서 JSON 객체를 인코딩, 내가 문제를 명중
줄 바꿈을 다른 문자로 변경하면 문제가있는 곳에서 문제가 너무 명확 해지지 만 글자가 줄 바꿈으로 궁극적으로 파일의 데이터를 이와 같이 형식화해야합니다 (이 파일은 나는 제어 할 수없는 다른 시스템으로 넘어 갔고, 아는 한 줄 바꿈은 JSON 문자열에서 지원되는 문자입니다.
여기 정확히 어떤 문제가 있으며 어떻게 해결할 수 있습니까?
import json
changes_str = json.dumps(changes)
DICT 파이썬에서 문자열 JSON을로드하려면 : 단일 라인 피드로 변환
실제 문제는 해결되지 않았습니다. 예를 들어'dict_changes = json.loads ('{ "message": "hello \ nworld"}')'를 시도하면 잘못된 '잘못된 제어 문자'오류가 발생합니다. http://www.json.org/는 '\ n'이 문자열에있는 유효한 문자임을 나타냅니다. –
공정하게 JSON 페이지를 다시 읽으려면 실제로는 '\ n'다음에 'n'이오고 제어 문자는 '\ n'이 아니라 내 질문의 루트 일 것입니다. –