jsoncpp 在嵌入式linux 下调试心德

本文介绍了在嵌入式Linux环境下使用jsoncpp从文件读取JSON时遇到的编码问题,特别是指出UTF8编码的重要性。由于Windows生成的文件可能采用不同编码,不使用UTF8可能会导致错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jsoncpp 从文件读取json 

代码如下

json文件如下

{
   "addr" : "123456789abc",
   "classinfo" : [
        {
            "index" : 1,
            "type" : "3D"
        },
        {
            "index" : 2,
            "type" : "jingpin"
        }
   ]
}
Json::Reader reader; // 解析json用Json::Reader
Json::Value root; // Json::Value是一种很重要的类型,可以代表任意类型。如int, string, object, array
cout<<filename<<endl;
ifstream in(filename,ios::binary);
if (reader.parse(in,root)) {
	//if (!root["addr"].isNull()) {
	cout << root["addr"].asString() << endl;    ///读取元素
	Json::Value arrayObj = root["classinfo"];
	for (int i = 0; i < arrayObj.size(); i++) {
		cout << arrayObj[i]["index"].asInt() << " "<<arrayObj[i]["type"].asString()<<endl;
		}
		//}
} else{
	
    cout<<reader.getFormatedErrorMessages()<<endl;
}
in.close();
return 0;


运行之后报如下错误:

经过查找发现主要是content.json编码格式问题 嵌入式linux 需要使用utf8编码的文件或asn1编码  使用其他编码会出问题 尤其是在windows下生成的文件要注意生成json文件的编码方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值