C++引入json库、 json格式字符串生成和json格式文件解析学习

学习资料参考

VS2010下静态链接库和动态链接库的生成和使用
C++ Json解析 之 JsonCpp的详细运用细节
vs—为c++项目添加所依赖的.h和.lib文件
C++ 解析Json——jsoncpp
感谢以上博主的博文指导

json库资源

sourceforge资源
下好解压即可

编译生成.lib文件

\jsoncpp-src-0.5.0\makefiles\vs71\jsoncpp.sln
C++引入json库、 json格式字符串生成和json格式文件解析学习_第1张图片
C++引入json库、 json格式字符串生成和json格式文件解析学习_第2张图片
C++引入json库、 json格式字符串生成和json格式文件解析学习_第3张图片
这几处以实际项目为参考

之后会在

  • debug 模式
    jsoncpp-src-0.5.0 2\ dist_jsoncpp-src-0.5\jsoncpp-src-0.5.0\build\vs71\debug\lib_json文件夹生成json_vc71_libmtd.lib
  • release 模式
    jsoncpp-src-0.5.0 2\dist_jsoncpp-src-0.5\jsoncpp-src-0.5.0\build\vs71\release\lib_json文件夹生成
    json_vc71_libmt.lib

项目导入json库

C++引入json库、 json格式字符串生成和json格式文件解析学习_第4张图片
按个人习惯,我创建了include文件夹放.h文件,lib文件夹放.lib文件
jsoncpp-src-0.5.0 2\dist_jsoncpp-src-0.5\jsoncpp-src-0.5.0\include\json中的.h文件放入include
C++引入json库、 json格式字符串生成和json格式文件解析学习_第5张图片
刚才编译生成的.lib文件放入lib文件夹即可

之后开始检查一遍项目的相关参数,相关参数应该和之前编译.lib文件时候的设置一致
C++引入json库、 json格式字符串生成和json格式文件解析学习_第6张图片
C++引入json库、 json格式字符串生成和json格式文件解析学习_第7张图片

因为之前引入的.h文件放入了include中,所以这里添加一个include简化一下
C++引入json库、 json格式字符串生成和json格式文件解析学习_第8张图片

Json格式字符串的生成

#include
#include

#pragma comment(lib,"lib/json_vc71_libmtd.lib")
int main() {
	Json::Value e;
	e["test"] = "Suc";
	std::cout << e.toStyledString();
	return 0;
}

{
“test” : “Suc”
}

Json格式字符串解析

创建一个json格式文件做测试

[
    {
        "name": "test1",
        "info": {
            "id": 1,
            "state": 0
        }
    },
    
    {
        "name": "test2",
        "info": {
            "id": 2,
            "state": -1
        }
    }
]

C++引入json库、 json格式字符串生成和json格式文件解析学习_第9张图片

#include
#include
#include

#pragma comment(lib,"lib/json_vc71_libmtd.lib")
int main() {
	Json::Reader reader;
	Json::Value jsonE;
	std::ifstream is("test.json");
	reader.parse(is, jsonE, false);
	for (auto& e : jsonE) {
		std::cout << e["name"].asString() << "\n";
		std::cout << e["info"]["id"].asInt() << "\n";
		std::cout << e["info"]["state"].asInt() << "\n";
	}
	return 0;
}

test1
1
0
test2
2
-1

你可能感兴趣的:(c++,fitsCore)