当前位置:首页 » 编程软件 » vs编译jsoncpp

vs编译jsoncpp

发布时间: 2022-08-07 10:49:06

❶ jsoncpp阅读文件不正确问题,怎么解决

一、下载JsonCpp
大家可以从我的资源下载,也可以从官方下载
二、编译Lib
大家用VS打开\jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\makefiles\vs71目录下的工程文件,然后编译就可以生成相关的Lib库(默认生成:json_vc71_libmt.lib)

❷ VS2017编译jsoncpp我出现的问题及怎么解决的

文件-新建-项目-选c++-win32控制台程序-一步一步向下,完成新建后,再看解决方案管理器,树状结构最下面有个“源代码”文件夹,如果里面已经有cpp,就粘贴你的代码,如果没有,就右键-新建cpp源文件,再粘贴代码,然后才能编译。如果你都没看到这些菜单的话说明你的vs2017没装c++相关的组件。

❸ vs2017使用json.hpp文件

VS2017里新建一个空的控制台程序(用作测试jsoncpp是否可用),名为。 TestJSON解压下载好的文件。jsoncpp-src-0.5.0.tar.gz将 jsoncpp-src-0.5.0include 目录下的json文件夹拷贝至 TestJSON 工程目录下将 jsoncpp-src-0.5.0srclib_json 目录下的所有.h, .cpp 文件全部拷贝至 TestJSON 工程目录下在VS201里引入工程目录下刚刚从 jsoncpp-src-0.5.0 导入的文件,如图1在VS2010里新建main.cpp来测试jsoncpp是否可用。
Visual Studio 2017是微软于2017年3月8日正式推出的新版本,是迄今为止最具生产力的Visual Studio版本。其内建工具整合了NET Core、Azure应用程序、微服务(microservices)、Docker容器等所有内容。

❹ 怎么在VS2008里使用jsoncpp

C++要使用JSON来解析数据,一般采用jsoncpp.

下载jsoncpp后,按ReadMe文档的说法是要先安装的,但是安装比较麻烦。然而事实上,我们并不需要安装,就可以直接使用。

方法一:直接拷贝源文件。这个方法比较简单,但不推荐,因为不便于项目管理。

  1. VS2008里新建一个空的控制台程序(用作测试jsoncpp是否可用),名为: TestJSON

  2. 解压下载好的文件:jsoncpp-src-0.5.0.tar.gz

  3. 将 jsoncpp-src-0.5.0include 目录下的json文件夹拷贝至 TestJSON 工程目录下

  4. 将jsoncpp-src-0.5.0srclib_json 目录下的所有.h, .cpp文件全部拷贝至 TestJSON 工程目录下

  5. 在VS2008里引入工程目录下刚刚从jsoncpp-src-0.5.0 导入的文件,如图1

  6. 在VS2008里新建main.cpp来测试jsoncpp是否可用。代码见文章末尾main.cpp


方法二:使用静态链接库

  1. VS2008里新建一个空的控制台程序(用作测试jsoncpp是否可用),名为: TestJSON

  2. 解压下载好的文件:jsoncpp-src-0.5.0.tar.gz

  3. 利用VS2008打开jsoncpp-src-0.5.0makefilesvs71目录下的jsoncpp.sln,会出现三个Project:jsontest,lib_json,test_lib_json

  4. 在lib_json上 右击-->Properties-->Configuration Properties-->C/C++-->Code Generation,注意右侧的Runtime Library的内容,如图2,看完箭头所指的东西就可以点确定,关掉属性页。

  5. 编译lib_json,显示编译成功后,在jsoncpp-src-0.5.0uildvs71debuglib_json目录下会生成一个json_vc71_libmtd.lib,将这个lib拷贝至TestJSON工程目录下。

  6. 将jsoncpp-src-0.5.0includejson目录下的所有.h文件拷贝至TestJSON工程目录下,并在工程Header Files引入.

  7. 将方法一里的main.cpp添加到工程中,并在工程名上 右击-->Properties-->Configuration Properties-->C/C++-->Code Generation, 将Runtime Library改成图2箭头所示内容。

  8. 在工程名上右击-->Properties-->Configuration Properties-->Linker-->Input, 在Additional Dependencies里填写json_vc71_libmtd.lib,然后确定,编译就行了。


/* 测试jsoncpp的使用
*/

#include<iostream>
#include"json/json.h"

usingnamespacestd;
usingnamespaceJson;//json的命名空间

intmain()
{
/*JSONDATAasfollowing://一个json类型的数据
{
"test:5
}*/

stringtest="{"test":5}";//保存上文的json类型的数据

//以下涉及json的操作,将在后文中涉及,此处为简单应用,不解释,你懂的
Readerreader;
Valuevalue;

if(reader.parse(test,value))
{
inti=0;

if(!value["test"].isNull())
{
i=value["test"].asInt();
cout<<i<<endl;
}
}

return0;
}

❺ jsoncpp和rapidjson哪个好用

程序员的秘诀是:编程、编程、再编程。


  • 简单性

    真的对这个问题一窍不通,但是专人说:Rapidjson是全部都在第一个总文件里,jsoncpp要求您构建或编译一个库;但rapidjson的一些接口不全,只提供了一层一层的这种解析方式,不能将某一层一次读出来,实际用的时候,要简单封装一下,不然代码量会很大。


  • 总结

    其实这种类似程序的东西我真的毫无涉猎,不过以后可以尝试看看。这个库使用了大量c++ 11标准元素,并且库的设计也符合一些STL标准,可配置性比较强;单文件方式,引用也比较方便;使用上,也有其独到的地方,更接近JSON的本质;此外性能上还是不错的,只是比rapidjson差,比libjson,jsoncpp之流还是强了不少

❻ jsoncpp问题

放到你的工程里,相当于你的工程额外多了一个cpp文件,和两个h文件,如果你的工程仅有一个main.cpp,那就是两个cpp和两个h文件,组成了你这个工程。

❼ C++ json解析

C++ 解析Json——jsoncpp
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录。
Jsoncpp是个跨平台的开源库,下载地址:http://sourceforge.net/projects/jsoncpp/,我下载的是v0.5.0,压缩包大约104K。

方法一:使用Jsoncpp生成的lib文件
解压上面下载的Jsoncpp文件,在jsoncpp-src-0.5.0/makefiles/vs71目录里找到jsoncpp.sln,用VS2008版本编译,默认生成静态链接库。 在工程中引用,只需要包含include/json下的头文件及生成的.lib文件即可。
如何包含lib文件:在.cpp文件中#pragma comment(lib."json_vc71_libmt.lib"),在工程属性中Linker下Input中Additional Dependencies写入lib文件名字(Release下为json_vc71_libmt.lib,Debug为json_vc71_libmtd.lib)

注意:Jsoncpp的lib工程编译选项要和VS工程中的编译选项保持一致。如lib文件工程编译选项为MT(或MTd),VS工程中也要选择MT(或MTd),否则会出现编译错误问题,debug和release下生成的lib文件名字不同,注意不要看错了,当成一个文件来使用(我就犯了这个错误)。

方法二:使用Jsoncpp包中的.cpp和.h文件
解压上面下载的Jsoncpp文件,把jsoncpp-src-0.5.0文件拷贝到工程目录下,将jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\include\json和jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\src\lib_json目录里的文件包含到VS工程中,在VS工程的属性C/C++下General中Additional Include Directories包含头文件目录.\jsoncpp-src-0.5.0\include。在使用的cpp文件中包含json头文件即可,如:#include "json/json.h"。将json_reader.cpp、json_value.cpp和json_writer.cpp三个文件的Precompiled Header属性设置为Not Using Precompiled Headers,否则编译会出现错误。

jsoncpp 使用详解
jsoncpp 主要包含三种类型的 class:Value、Reader、Writer。jsoncpp 中所有对象、类名都在 namespace Json 中,包含 json.h 即可。
Json::Value 只能处理 ANSI 类型的字符串,如果 C++ 程序是用 Unicode 编码的,最好加一个 Adapt 类来适配。

下面是从网上找的代码示例:
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里所有子元素
{
std::string upload_id = root["uploadid"].asString(); // 访问节点,upload_id = "UP000000"
int code = root["code"].asInt(); // 访问节点,code = 100
}
2. 从文件解析json

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;
}
3. 向文件中插入json

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();
}

❽ VS2008下用C++解析JSON出现问题

应该还是你的lib库没有加载上导致的,看下头文件路径,lib库路径都设置了吗?

❾ jsoncpp和rapidjson哪个好用

易用性:rapidjson是全头文件包含的,jsoncpp需要你内置编译或编译成库;但rapidjson的一些接口不全,只提供了一层一层的这种解析方式,不能将某一层一次读出来,实际用的时候,要简单封装一下,不然代码量会很大;
性能:rapidjson的性能是现在所有的c++ json解析库里面最高的,没有之一;
容错性:rapidjson只支持标准的 json 格式,很多人以为这个是缺点,我觉得这个是优点,大家都按照标准做,这是成本最低的;

rapidjson之前是托管在Googe Code上的,现在已迁移到GitHub,地址:miloyip/rapidjson · GitHub

热点内容
我的世界服务器如何用自己的存档 发布:2024-05-04 12:06:36 浏览:336
七日杀服务器ip怎么设置 发布:2024-05-04 11:57:57 浏览:430
启用java 发布:2024-05-04 11:51:46 浏览:969
mac下开发php 发布:2024-05-04 11:28:53 浏览:628
java接口及实现方法 发布:2024-05-04 11:05:08 浏览:567
iphone怎么清理应用缓存 发布:2024-05-04 11:05:02 浏览:410
rest上传文件 发布:2024-05-04 11:03:19 浏览:282
情侣玩游戏解压视频 发布:2024-05-04 11:00:57 浏览:779
c文件夹大小 发布:2024-05-04 10:54:35 浏览:678
回忆源码 发布:2024-05-04 10:28:20 浏览:235