C++조작 json 파일 및 jsoncpp 설정 상세 설명
json 파일 은 비교적 경량급 의 파일 로 형식 이 간단 하고 사용 하기에 편리 하 다.정 보 를 저장 하 는 것 은 다른 방식 에 비해 자신 만 의 장점 이 있다.
오늘 여러분 께 공 유 된 것 은 어떻게 C++를 이용 하여 json 파일 을 조작 하 는 지 입 니 다.
jsoncpp 라 이브 러 리 를 어떻게 사용 하 는 지 알 고 있다 면 첨부 를 보지 않 아 도 됩 니 다.처음 사용 하면 마지막 까지 환경 을 설정 한 다음 에 조작 하 십시오.
json 파일 소개
1.json 파일
JSON(JavaScript Object Notation,JS 대상 약보)은 경량급 데이터 교환 형식 이다.이 는 ECMAScript(유럽 컴퓨터 협회 가 제정 한 js 규범)의 키 집합 을 바탕 으로 프로 그래 밍 언어 에 완전히 독립 된 텍스트 형식 으로 데 이 터 를 저장 하고 표시 합 니 다.간결 하고 뚜렷 한 차원 구 조 는 JSON 을 이상 적 인 데이터 교환 언어 로 만 들 었 다.사람 이 읽 고 쓰기 쉬 우 며 기계 적 으로 해석 하고 생 성 하기 쉬 우 며 네트워크 전송 효율 도 효과적으로 향상 시킨다.
2.json 과 다른 저장 데이터 방식 비교
왜 제 이 슨 파일 을 써 야 합 니까?
우리 가 가장 자주 사용 하 는 데 이 터 를 저장 하 는 방식 은 매우 많다.예 를 들 어 txt 파일 을 이용 하여 저장 하고 xml 를 이용 하여 저장 하 며 워드 를 이용 하여 엑셀 을 이용 하여 저장 하 는 것 이다.만약 에 우리 가 요구 가 비교적 높 으 면 데이터 재 고 를 사용 할 수 있다.
txt,워드 에 비해 json 형식 이 더욱 명확 하고 중요 한 정 보 를 얻 는 것 이 편리 합 니 다.
xml 에 비해 json 형식 은 더욱 간결 하고 같은 파일 을 저장 하 며 사용 하 는 메모리 가 더 작 습 니 다.
엑셀 에 비해 제 이 슨 은 문자 류 파일 을 저장 하 는 데 더욱 적합 하 다.엑셀 은 비교적 간단 한 데이터베이스 에 해당 한다.
데이터 베이스 에 비해 제 이 슨 이 더욱 편리 하고 데이터 베 이 스 는 우리 가 설정 을 하고 소프트웨어 를 설치 해 야 한다.제 이 슨 은 직접 사용 할 수 있다.
2.C++조작 json 파일
1.jsoncpp 라 이브 러 리 다운로드
여러분 은 스스로 인터넷 에 접속 하여 jsoncpp 라 이브 러 리 를 다운로드 할 수 있 습 니 다.
2.C++문자열 에서 json 읽 기
json 양식 이 비교적 많 습 니 다.여기 서 두 가 지 를 공유 합 니 다.하 나 는 비교적 직접적 이 고 간단 하 며 하 나 는 약간 복잡 합 니 다.
1.심 플 제 이 슨 스타일
다음 json 데 이 터 를 저장 할 문자열 을 정의 합 니 다.
{
"name" : "shuiyixin",
"age" : "21",
"sex" : "man"
}
읽 기 코드 는 다음 과 같 습 니 다:
void readStrJson()
{
//
const char* str =
"{\"name\":\"shuiyixin\",\"age\":\"21\",\"sex\":\"man\"}";
Json::Reader reader;
Json::Value root;
//
if (reader.parse(str, root))
{
string name = root["name"].asString();
int age = root["nomen"].asInt();
string sex = root["sex"].asString();
cout << name + "," << age << "," << sex << endl;
}
}
2.복잡 한 제 이 슨 스타일복잡 하 다 는 것 은 제 이 슨 안에 여러 층 으로 나 뉘 는데 위 에 있 는 간단 한 것 은 한 층 밖 에 없다 는 것 이다.제 이 슨 데 이 터 는 다음 과 같다.
{
"name":"shuiyixin",
"major":[
{
"AI":"MachineLearning"
},
{
"AI":"DeepLearning"
},
{
"AI":"ComputerVision"
}]
}
읽 기 코드 는 다음 과 같 습 니 다:
void readStrProJson()
{
string strValue = "{\"name\":\"shuiyixin\",\"major\":[{\"AI\":\"MachineLearning\"},{\"AI\":\"DeepLearning\"},{\"AI\":\"ComputerVision\"}]}";
Json::Reader reader;
Json::Value value;
if (reader.parse(strValue, value))
{
string out = value["name"].asString();
cout << out << endl;
const Json::Value arrayObj = value["major"];
for (unsigned int i = 0; i < arrayObj.size(); i++)
{
out = arrayObj[i]["AI"].asString();
cout << out<<endl;
}
}
}
3.C++파일 에서 json 읽 기문자열 에서 json 파일 을 읽 는 것 은 json 파일 을 알 수 있 도록 하기 위해 서 입 니 다.우 리 는 결국 파일 에서 읽 어야 합 니 다.
이 읽 은 제 이 슨 파일 은 아래 의 제 이 슨 파일 을 통 해 스스로 만 들 수 있 습 니 다.
다음 json 파일 을 예 로 들 면:
{
"age" : 21,
"friends" : {
"friend_age" : 21,
"friend_name" : "ZhaoWuxian",
"friend_sex" : "man"
},
"hobby" : [ "sing", "run", "Tai Chi" ],
"name" : "shuiyixin",
"sex" : "man"
}
읽 기 코드 는 다음 과 같 습 니 다:
void readFileJson()
{
Json::Reader reader;
Json::Value root;
// , demo.json
ifstream in("demo.json", ios::binary);
if (!in.is_open())
{
cout << "Error opening file
";
return;
}
if (reader.parse(in, root))
{
//
string name = root["name"].asString();
int age = root["age"].asInt();
string sex = root["sex"].asString();
cout << "My name is " << name << endl;
cout << "I'm " << age << " years old" << endl;
cout << "I'm a " << sex << endl;
//
string friend_name = root["friends"]["friend_name"].asString();
int friend_age = root["friends"]["friend_age"].asInt();
string friend_sex = root["friends"]["friend_sex"].asString();
cout << "My friend's name is " << friend_name << endl;
cout << "My friend's sex is "<<friend_sex << endl;
cout << "My friend is " << friend_age << " years old" << endl;
//
cout << "Here's my hobby:" << endl;
for (unsigned int i = 0; i < root["hobby"].size(); i++)
{
string ach = root["hobby"][i].asString();
cout << ach << '\t';
}
cout << endl;
cout << "Reading Complete!" << endl;
}
else
{
cout << "parse error
" << endl;
}
in.close();
}
4.C++json 파일 쓰기읽 는 것 외 에 우 리 는 자주 json 파일 을 쓸 것 이다.json 파일 은 다음 과 같다.
{
"age" : 21,
"friends" : {
"friend_age" : 21,
"friend_name" : "ZhaoWuxian",
"friend_sex" : "man"
},
"hobby" : [ "sing", "run", "Tai Chi" ],
"name" : "shuiyixin",
"sex" : "man"
}
기록 코드 는 다음 과 같 습 니 다:
void writeFileJson()
{
//
Json::Value root;
//
root["name"] = Json::Value("shuiyixin");
root["age"] = Json::Value(21);
root["sex"] = Json::Value("man");
//
Json::Value friends;
//
friends["friend_name"] = Json::Value("ZhaoWuxian");
friends["friend_age"] = Json::Value(21);
friends["friend_sex"] = Json::Value("man");
//
root["friends"] = Json::Value(friends);
//
root["hobby"].append("sing");
root["hobby"].append("run");
root["hobby"].append("Tai Chi");
//
//cout << "FastWriter:" << endl;
//Json::FastWriter fw;
//cout << fw.write(root) << endl << endl;
//
cout << "StyledWriter:" << endl;
Json::StyledWriter sw;
cout << sw.write(root) << endl << endl;
//
ofstream os;
os.open("demo.json", std::ios::out | std::ios::app);
if (!os.is_open())
cout << "error:can not find or create the file which named \" demo.json\"." << endl;
os << sw.write(root);
os.close();
}
주의해 야 할 것 은:1.기록 할 파일 이 존재 하지 않 으 면 자동 으로 파일 을 만 듭 니 다.
2.파일 이 존재 한다 면 기록 과정 은 파일 에 있 는 데 이 터 를 덮어 쓰 지 않 고 새로운 데 이 터 를 기 존 데이터 뒤에 씁 니 다.
5.주 함수
모든 기능 모듈 을 다 썼 습 니 다.나머지 는 주 함수 입 니 다.
#include <string>
#include <json.h>
#include <iostream>
#include <fstream>
using namespace std;
void readStrJson(); // JSON
void readStrProJson(); // JSON( )
void readFileJson(); // JSON
void writeFileJson(); // JSON
int main(int argc, char *argv[])
{
writeFileJson(); // json
readFileJson(); // JSON
cout << "
";
readStrJson(); // json
cout << "
";
readStrProJson();// JSON( )
system("pause");
return 0;
}
첨부:jsoncpp 라 이브 러 리 설정jsoncpp 라 이브 러 리 설정 은 opencv 설정 원리 와 같 습 니 다.아래 의 튜 토리 얼 을 보 실 수 있 습 니 다.
opencv 설정(win 10+VS 2015+OpenCV 3.1.0):여 기 를 클릭 하여 다운로드
그러나 jsoncpp 라 이브 러 리 의 내용 이 비교적 적 고 설정 이 opencv 만큼 번 거 롭 지 않 습 니 다.
1.스트레스 해소 및 이동
먼저 라 이브 러 리 압축 을 풀 고 아래 두 폴 더 를 만 든 항목 아래로 복사 합 니 다.
라 이브 러 리 압축 해제
만 든 항목 에 두 개의 폴 더 를 복사 합 니 다.
2.속성 설정
디 버 깅 을 클릭 하고 항목 속성 을 클릭 합 니 다.
클릭 하여 디 버 깅->항목 속성
VC+디 렉 터 리 에 포 함 된 디 렉 터 리 를 선택 하고 수정 을 누 르 십시오.
include 폴 더 의 json 파일 경 로 를 여기에 복사 하고 저장 합 니 다.
3.설정 항목
src 폴 더 아래 libjson 폴 더 의 cpp 파일 을 원본 파일 에 추가 합 니 다:
src 폴 더 찾기->libjson 폴 더->모든 cpp 파일 을 복사 합 니 다.
원본 파일 에 추가
그리고 사용 할 수 있어 요.
총결산
C++조작 json 파일 및 jsoncpp 설정 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C++조작 json 파일 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HDU 원활 공사 & & 원활 공사 (차 트 법)모 성 은 도시 의 교통 상황 을 조사 하여 기 존의 도시 도로 통계 표를 얻 었 고 표 에는 모든 도로 가 직접 연 결 된 도시 가 열거 되 어 있다.성 정부의 '원활 한 공사' 목 표 는 성 전체의 어느 두 도시...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.