从github下载jsoncpp-master

在执行\jsoncpp-master\makefiles\msvc2010文件夹下jsoncpp.sln

会有3个项目

执行lib_json项目生成lib_json.lib。这个静态库就是我们想要的。

这里要注意的是:“执行lib_json项眼下要设置一下c/c++-》代码生成-》执行库以便生成不一样的lib文件”

假设lib要用于MTd环境下,则设置为MTd;假设lib要用于MDd环境下,则设置为MDd。



jsoncpp的使用:http://www.cppblog.com/wanghaiguang/archive/2013/12/26/205020.html

// TestJsoncppCode.cpp : Defines the entry point for the console application.
// #include "stdafx.h" #include "include/json/json.h"
#include <fstream>
#include <string> #pragma comment(lib,"lib_json.lib")
using namespace std; #ifdef _DEBUG
#define new DEBUG_NEW
#endif // The one and only application object void WriteJsonData(const char* filename)
{
Json::Reader reader;
Json::Value root; // Json::Value是一种非常重要的类型。能够代表随意类型。 如int, string, object, array... std::ifstream is;
is.open(filename, std::ios::binary);
if (reader.parse(is, root))
{
Json::Value arrayObj; // 构建对象
Json::Value new_item, new_item1;
new_item["date"] = "2011-11-11";
new_item1["time"] = "11:11:11";
arrayObj.append(new_item); // 插入数组成员
arrayObj.append(new_item1); // 插入数组成员
int file_size = root["files"].size();
for (int i = 0; i < file_size; ++i)
root["files"][i]["exifs"] = arrayObj; // 插入原json中
std::string out = root.toStyledString();
// 输出无格式json字符串
Json::FastWriter writer;
std::string strWrite = writer.write(root);
std::ofstream ofs;
ofs.open("test_write.json");
ofs << strWrite;
ofs.close();
} is.close();
} int ReadJsonFromFile(const char* filename)
{
Json::Reader reader;// 解析json用Json::Reader
Json::Value root; // Json::Value是一种非常重要的类型,能够代表随意类型。如int, string, object, array... std::ifstream is;
is.open(filename, std::ios::binary);
if (reader.parse(is, root, false))
{
std::string code;
if (!root["files"].isNull()) // 訪问节点。Access an object value by name, create a null member if it does not exist.
code = root["uploadid"].asString(); code = root.get("uploadid", "null").asString();// 訪问节点,Return the member named key if it exist, defaultValue otherwise. int file_size = root["files"].size(); // 得到"files"的数组个数
for (int i = 0; i < file_size; ++i) // 遍历数组
{
Json::Value val_image = root["files"][i]["images"];
int image_size = val_image.size();
for (int j = 0; j < image_size; ++j)
{
std::string type = val_image[j]["type"].asString();
std::string url = val_image[j]["url"].asString();
printf("type : %s, url : %s \n", type.c_str(), url.c_str());
}
}
}
is.close(); return 0;
} int main(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0; //1.从字符串解析json
const char* str = "{\"uploadid\": \"UP000000\",\"code\": 100,\"msg\": \"\",\"files\": \"\"}"; Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)) // reader将Json字符串解析到root,root将包括Json里全部子元素
{
printf("--------------从字符串读取JSON---------------\n");
std::string upload_id = root["uploadid"].asString(); // 訪问节点。upload_id = "UP000000"
int code = root["code"].asInt(); // 訪问节点,code = 100 printf("upload_id : %s\ncode : %d \n", upload_id.c_str(), code);
} //2.从文件解析json
string sTempPath = "test_json.json"; printf("--------------从文件读取JSON---------------\n");
ReadJsonFromFile(sTempPath.c_str()); //3.向文件写入json
WriteJsonData(sTempPath.c_str()); system("pause"); return nRetCode;
}

jsoncpp的生成和使用的更多相关文章

  1. 使用jsoncpp解析生成json

    在此站点下载jsoncpp(https://sourceforge.net/projects/jsoncpp/这个站点的版本较旧) 在电脑上安装Python,运行amalgamate.py,生成的di ...

  2. jsoncpp 不能处理long类型数据

    jsoncpp,是一个c++的解析和生成json的开源工具.假设你的c++程序须要解析或生成json,它会使这个过程变得非常easy! 可是,今天在用jsoncpp进行生成json的时候报了错误,非常 ...

  3. 【独立开发人员er Cocos2d-x实战 013】Cocos2dx 网络编程实战之星座运势

    学习cocos2d-x和cocos creator的圈子:cocos2d-x:436689827    cocos creator:124727696 本篇文章主要内容:jsoncpp的使用,Coco ...

  4. Oracle 11g数据库详解(2)

    FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...

  5. jsoncpp 生成 json 字符串

    Json::Value root; Json::Value arrayObj; Json::Value item; for (int i=0; i<10; i++) { item["k ...

  6. C++处理Json串——jsoncpp库

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录.Jsoncpp是个跨 ...

  7. json 对c++类的序列化(自动生成代码)

    [动机] 之前写网络协议的时候,使用的是google protobuf,protobuf不但在性能和扩展性上有很好的优势,protoc自动生成c++类代码的工具,这点确实给程序员带来了很多便利. 做后 ...

  8. Jsoncpp Compiler、Programming

    catalog . C++ jsoncpp简介 . Jsoncpp的下载与编译 . Linux Jsoncpp的SDK编译 & 简单实例 . Windows Jsoncpp的SDK编译 &am ...

  9. JsonCpp的简单使用方法

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

随机推荐

  1. 重构27-Remove God Classes(去掉神类)

    在传统的代码库中,我们常常会看到一些违反了SRP原则的类.这些类通常以Utils或Manager结尾,有时也没有这么明显的特征而仅仅是普通的包含多个功能的类.这种God类还有一个特征,使用语句或注释将 ...

  2. js获取地址栏参数2种最简单方法

    NO1:(本人最喜欢) //普通参数 function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name ...

  3. JavaScript判断

    if...else: if...else语句是在指定的条件成立时执行的代码,在条件不成立时执行else后的代码. 语法: if(条件) {条件成立时执行的代码 }else{ 条件不成立的时执行的代码} ...

  4. C++ 程序的编译

    一.编译器都具备集成开发环境(Integrated Developed Environment,IDE) 二.程序源文件命名约定: C++ 的后缀一般是 .cpp .cc .C .cpp .cxx 三 ...

  5. centos7安装个人博客wordpress

    第一步: 安装apache web 第二步: 安装MariaDB数据库 第三步: 安装PHP 第四步: 安装phpMyAdmin 第五部: 创建数据库: 第六部: 下载wordpress 第七部:复制 ...

  6. 荷兰国旗问题、快排以及BFPRT算法

    荷兰国旗问题 给定一个数组arr,和一个数num,请把小于num的数放数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边.要求额外空间复杂度O(1),时间复杂度O(N). 这个问题 ...

  7. 调用微信扫一扫功能,踩坑'invalid signature'

    在vue项目中,调用微信扫一扫功能,在安卓系统下完全正常,ios系统下却报错'invalid signature'的错误,这可能令许多小伙伴困惑,经过查询大量博客相关资料,才找到了解决的方法. 原因: ...

  8. time模块,补上之前拉下的作业。

    time,时间模块比较重要,但不难学,主要是要学会转换时间格式.计算机的时间都是时间戳.人是看不懂的.写出时间转换的固定格式语句.import time   # 首先就是引入时间模块. time.ti ...

  9. TestNG异常测试

    用@Test(expectedExceptions = xxx) 声明 package com.janson; import org.testng.annotations.Test; public c ...

  10. Python习题之列表排序,4种方法

    def sort_list_method_1(a): return sorted(a) print(sort_list_method_1([1, 4, 2])) def sort_list_metho ...