C + + 처리 JSON 데이터 교환 형식

4179 단어 json
요약    JSON 의 전 칭 은 JavaScript Object Notation 이 라 고 하 는데 말 그대로 JSON 은 Javascript 대상 을 표시 하 는 데 사 용 됩 니 다. JSON 은 공식 적 으로 JSON 은 경량급 데이터 전송 형식 이 라 고 설명 합 니 다.    본 고 는 JSON 자체 의 세부 사항 을 상세 하 게 소개 하지 않 고 C + + 언어 로 JSON 을 처리 하 는 방법 을 논의 하 는 데 목적 을 둔다.JSON 에 대한 더 구체 적 인 정 보 는 JSON 홈 페이지 를 참조 하 시기 바 랍 니 다.http://www.json.org。   2. 본 고 는 JSON 의 C + + 라 이브 러 리 를 선택 하여 처리 합 니 다.    본 고 는 JSON 을 분석 하기 위해 제3자 라 이브 러 리 jsoncpp 를 선택 하 였 다.jsoncpp 는 비교적 유명한 C + JSON 분석 라 이브 러 리 입 니 다.제 이 슨 홈 페이지 에서 도 첫 추천 을 받 았 다.다운로드 주소:http://sourceforge.net/projects/jsoncpp。본 논문 에서 사용 하 는 jsoncpp 버 전 은 0.5.0 이다.  3. jsoncpp Windows 에서 의 컴 파일    제3자 소스 라 이브 러 리 를 사용 하려 면 첫 번 째 단 계 는 컴 파일 입 니 다. 소스 파일 을 우리 가 편리 하 게 사용 할 수 있 는 동적 링크 라 이브 러 리, 정적 링크 라 이브 러 리 또는 정적 가 져 오기 라 이브 러 리 로 컴 파일 합 니 다 [1].jsconcpp 에서 JSON 분석 을 하 는 소스 파일 은 include / json, src / lib 에 분포 되 어 있 습 니 다.제 이 슨 하.사실 jsoncpp 소스 코드 가 많 지 않 습 니 다. 제품 관 리 를 편리 하 게 하기 위해 동적 링크 라 이브 러 리 나 정적 가 져 오기 라 이브 러 리 로 컴 파일 할 필요 가 없습니다. 그래서 저 희 는 정적 링크 라 이브 러 리 [2] 를 사용 합 니 다.    jsoncpp 는 완벽 하 게 처리 되 었 습 니 다. 모든 컴 파일 옵션 이 설정 되 어 있 습 니 다. Makefiles / vs 71 / jsoncpp. sln 을 열 면 컴 파일 을 시작 할 수 있 습 니 다.
4. jsoncpp 사용 상세 설명
    jsoncpp 는 주로 세 가지 유형의 class: Value, Reader, Writer 를 포함한다.jsoncpp 의 모든 대상, 클래스 이름 은 namespace JSon 에 있 으 며, json. h 를 포함 하면 됩 니 다. JSon: Value 는 ANSI 형식의 문자열 만 처리 할 수 있 습 니 다. C + + 프로그램 이 유 니 코드 로 인 코딩 되 어 있다 면 Adapt 류 를 추가 하 는 것 이 좋 습 니 다.
1、Value
    JSon: Value 는 jsoncpp 에서 가장 기본 적 이 고 가장 중요 한 클래스 로 다양한 유형의 대상 을 나타 내 는 데 사 용 됩 니 다. jsoncpp 가 지원 하 는 대상 유형 은 JSon: ValueType 매 거 진 값 을 볼 수 있 습 니 다.다음 과 같이 JSon:: Value 클래스 를 사용 할 수 있 습 니 다.
Json::Value json_temp;//     ,         
json_temp["name"] = Json::Value("123");  
json_temp["age"] = Json::Value(26);  
   
Json::Value root;//      json     
root["key_string"] = Json::Value("value_string");//      Key(  :key_string),      :"value_string"。  
root["key_number"] = Json::Value(12345);//      Key(  :key_number),    :12345。  
root["key_boolean"] = Json::Value(false);//      Key(  :key_boolean),  bool :false。  
root["key_double"] = Json::Value(12.345);//      Key(  :key_double),   double :12.345。  
root["key_object"] = Json_temp;//      Key(  :key_object),  json::Value    。  
root["key_array"].append("array_string");//      Key(  :key_array),     ,            :"array_string"。  
root["key_array"].append(1234);//     key_array   ,         :1234。  
Json::ValueType type = root.type();//    root    ,    objectValue   。

주: C + + 와 달리 자바 스 크 립 트 배열 은 임의의 형식의 값 이 될 수 있 기 때문에 jsoncpp 도 가능 합 니 다.
    예 를 들 어 위의 몇 가지 용법 은 대부분의 제 이 슨 응용 을 만족 시 킬 수 있 습 니 다. 물론 제 이 슨 cpp 는 다른 같은 능력 도 있 습 니 다. 예 를 들 어 주석 설정, 제 이 슨 크기 비교, 제 이 슨 대상 교환 등 은 모두 쉽게 사용 할 수 있 습 니 다. 여러분 이 직접 시도 하 세 요. 
2、Writer
    위 에서 말 한 바 와 같이 JSon: Value 의 사용 방식 은 이제 방금 할당 한 내용 을 볼 때 가 되 었 습 니 다. json 내용 을 보고 Writer 류 를 사용 하면 됩 니 다.JSoncpp 의 JSon: Writer 류 는 순수한 가상 클래스 로 직접 사용 할 수 없습니다.여기에서 우 리 는 JSon:: Writer 의 하위 클래스 를 사용 합 니 다: JSon: FastWriter, JSon:: StyledWriter, JSon:: StyledStreamWriter.말 그대로 제 이 슨: FastWriter 로 제 이 슨 을 처리 하 는 것 이 가장 빠 를 것 같 습 니 다. 다음은 해 보 겠 습 니 다.
출력 결 과 는:
{"key_array":["array_string",1234],"key_boolean":false,"key_double":12.3450,"key_number":12345,"key_object":{"age":26,"name":"huchao"},"key_string":"value_string"}
다시 말 그대로
JSon:: Styled Writer 는 포맷 된 json 입 니 다. 다음은 JSon: Styled Writer 가 어떻게 포맷 되 었 는 지 살 펴 보 겠 습 니 다.
출력 결 과 는:
{
   "key_array" : [ "array_string", 1234 ],
   "key_boolean" : false,
   "key_double" : 12.3450,
   "key_number" : 12345,
   "key_object" : {
      "age" : 26,
      "name" : "123"
   },
   "key_string" : "value_string"
}
3、Reader     Json:: Reader 는 읽 기 에 사 용 됩 니 다. 정확히 말 하면 문자열 을 Json: Value 대상 으로 바 꾸 는 데 사 용 됩 니 다. 다음은 간단 한 예 를 보 겠 습 니 다.
출력 결 과 는:
"123"
26

좋은 웹페이지 즐겨찾기