Jsoncpp数据交互文本格式

Jsoncpp库提供了Json::Value、Json::Reader和Json::Writer类来处理JSON数据。Json::Value能表示多种类型,Json::Reader用于解析JSON字符串或文件到Json::Value,而Json::Writer则将Json::Value转换为字符串。当处理utf8格式的JSON文件时需要注意BOM头,读取时需去除。使用jsoncpp需链接-ljsoncpp库,并正确引用头文件。JSON文件的读取可通过getMemberNames获取外层键。
摘要由CSDN通过智能技术生成

Json::Value  可以表示所有类型

Json::Reader 将json文件流或字符串解析到Json::Value,主要调用函数parse()

Json::Writer 将Json::Value转化为字符串流



若json文件是utf8格式,因为utf8用BOM表明编码格式,又叫utf-8的签名,意思是告诉编译器当前文件采用何种编码格式,但是BOM会产生输出,若接受者收到以EF BB BF开头的字节流,就是以utf-8格式编码的,在读取json文件时候需要去掉BOM


使用jsoncpp前提:包含jsoncpp的静态链接库,链接的时候需要连接库 -ljsoncpp,头文件包含需要用相对路径

绝对路径就是文件的真正存在的路径,是指从硬盘的根目录(盘符)开始,进行一级级目录指向文件

相对路径就是以当前文件为基准进行一级级目录指向被引用的资源文件


JSON文件:

{
    "scene_id" : 40012,
    "name" : "战盟广场",
    "relive" : {
        "type" : "1100",//复活类型
        "relive_item" : 200000016,//复活使用的道具
		"wait" : 2, //复活等待时间
        "multi_point" : [[5,40]],//多个复活点随机选择
		"state" : [100] //随机点复活 
    },
    "layout"
关于jsoncpp修改json文本的方法和技巧,我可以为您提供一些参考。如需了解更多关于jsoncpp的详细信息,建议您在官方网站了解相关文档和API。 要使用jsoncpp修改json文本,首先需要将其解析成jsoncpp的对象模型。可以使用Json::Reader类读取json文本并生成Json::Value对象。例如: ```c++ #include <json/json.h> #include <fstream> #include <iostream> int main() { std::ifstream infile("input.json"); Json::Value root; Json::Reader reader; bool ok = reader.parse(infile, root); if (!ok) { std::cerr << "Failed to parse json" << std::endl; return EXIT_FAILURE; } // modify json here... std::cout << root.toStyledString() << std::endl; return 0; } ``` 这里我们读取了一个名为"input.json"的json文本,并将其解析成了Json::Value对象。 要修改这个Json::Value对象,可以使用其提供的方法和运算符。例如,使用[]运算符和成员函数isString()、asString()、asInt()等可以获取并修改Json::Value对象的各个属性。例如: ```c++ // modify json here... root["name"] = "John Smith"; // modify string attribute root["age"] = 25; // modify integer attribute root["contact"]["email"] = "john.smith@example.com"; // modify nested attribute ``` 以上示例中,我们分别将json对象的"name"属性、"age"属性和嵌套"contact"对象内的"email"属性进行了修改。 最后,使用Json::StreamWriter类可以将Json::Value对象输出到json文本中。例如: ```c++ std::ofstream outfile("output.json"); Json::StreamWriterBuilder builder; builder["indentation"] = " "; std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter()); writer->write(root, &outfile); ``` 这里我们将修改后的Json::Value对象输出到名为"output.json"的json文本中。 希望以上内容能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值