본문 바로가기
지속가능티끌/Python

Python. json.loads 의 문자열 변환 특성 . jsoncpp 와 호환 안됨

by 리치굿맨 2021. 1. 7.

 

 

json 형식의 문자열 str_json 을 파이썬의 json.loads(str_json)로 변환 한것을 다시 문자열로 변환 str(json.loads(str_json)) 하면 원래의 문자열에서의 형식과는 다르게 출력되는 것들이 있다. 현재확인된것은 2개 . 

 

큰 따옴표는 작은따옴표로 출력됨.

"data"  -> 'data'

 

부울 값 표현의 첫글자 대문자로 표현됨. 

false, true -> False, True 

 

 

상기 파이썬 형식의 문자열을 c++의 Jsoncpp 에서 수신받아 Json::CharReader* json_reader->parse(파이썬에서 수신받은  문자열) 로 파싱할려고 하면 오류 발생한다. 

 

jsoncpp 에서는 모두 큰 따옴표, 부울 표현형식은 모두 소문자여야 정상 파싱가능하므로 해당 문자열 치환이후 처리해야함. 

 

 

파이썬측 처리 코드예.  

- jsconcpp 에서 파싱가능한 형식으로. 


data_rcv_dict = json.loads(str_json)
data_list = data_rcv_dict.get('data',0)

for data_dict_one in data_list :
    str_replace = str(data_dict_one).replace("'","\"") # jsoncpp 에는 파싱 못하므로 ' 를 모두 " 로 변경한것임. 
    str_replace = str_replace.replace("False", "false") # 소문자 false 로 수정해야 jsoncpp 가 정상 처리가능함.
    str_replace = str_replace.replace("True", "true") # 상동. 




 

 

 

연관

 

 

jsoncpp. Json::Value , Json::Reader, Json::CharReader, Json::CharReaderBuilder

개요 . Json형식 문자열을 Json::Value 로 변환 jsoncpp 기반 Json::Value , Json::Reader 는 Visual C++ 2017 에서는 정상작동하나, Visual C++ 2019 에서는 사용 불가. VC++2019 에서는 Json::CharReaderBuilder..

igotit.tistory.com

 

 


첫 등록 : 2021.01.07

최종 수정 : 

단축 주소 : https://igotit.tistory.com/2746

 


 

 

 

 

 

 

댓글1


   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT