c++使用json-cpp的库实现Json字符
写法是:
Json::Value device;
Json::Value valueArray;
Json::Value devProperty;
device["devType"]="master";
// device["property"].append("nodeId");
devProperty["object"]="node";
devProperty["property"]["nodeId"]="int";
valueArray.append("master");
valueArray.append("relay");
valueArray.append("slave");
devProperty["property"]["duty"]=valueArray;
device["property"]["devList"].append(devProperty);
// device["property"].append(valueArray);
// valueArray.clear();
// valueArray.append("normal");
// valueArray.append("offline");
// valueArray.append("faulty");
// device["property"]["state"]=valueArray;
// device["property"].append(valueArray);
// device["property"].append(valueArray);
Json::Value module;
Json::Value property/*(Json::objectValue)*/;
// property.setType(Json::objectValue);
// property.resize(3);
module["object"]="????";
// module["property"].append("paramP");
// module["property"].append("paramI");
// module["property"].append("paramD");
// module["property"]["paramP"]="double";
// module["property"]["paramI"]="double";
// module["property"]["paramD"]="double";
// valueArray.clear();
// valueArray.append("main");
// valueArray.append("backup");
// module["property"]["fiberConfig"]=(valueArray);
// // module["property"].append("setValue");
// module["property"]["setValue"]="double";
// valueArray.clear();
// valueArray.append(1);
// valueArray.append(2);
// valueArray.append(3);
// module["property"]["clockLevel"]=valueArray;
// valueArray.clear();
// valueArray.append("inner");
// valueArray.append("outer");
// module["property"]["clockSource"]=(valueArray);
// module["property"]["hasFreq"]="int";
property["paramP"]="double";
property["paramI"]="double";
property["paramD"]="double";
valueArray.clear();
valueArray.append("main");
valueArray.append("backup");
property["fiberConfig"]=(valueArray);
// module["property"].append("setValue");
property["setValue"]="double";
valueArray.clear();
valueArray.append(1);
valueArray.append(2);
valueArray.append(3);
property["clockLevel"]=valueArray;
valueArray.clear();
valueArray.append("inner");
valueArray.append("outer");
property["clockSource"]=(valueArray);
property["hasFreq"]="int";
module["property"]=property;
// module["property"].append("createTime");
device["property"]["moduleList"].append(module);
body["devList"].append(device);
最后输出为:
"devType": "master",
"property": {
"devList": [
{
"object": "node",
"property": {
"duty": [
"master",
"relay",
"slave"
],
"nodeId": "int"
}
}
],
"moduleList": [
{
"object": "主板",
"property": {
"clockLevel": [
1,
2,
3
],
"clockSource": [
"inner",
"outer"
],
"fiberConfig": [
"main",
"backup"
],
"hasFreq": "int",
"paramD": "double",
"paramI": "double",
"paramP": "double",
"setValue": "double"
}
}
],
}
}
碰到问题是希望json的每个key按照输入顺序排序,而不是字符顺序排序
比如moduleList的property中的paramD、paramI、paramP,输入如下,但是生成的时候顺序是paramP/paramI/paramD
"hasFreq": "int",
"paramD": "double",
"paramI": "double",
"paramP": "double",
"setValue": "double"
property["paramP"]="double";
property["paramI"]="double";
property["paramD"]="double";