Tôi có một ứng dụng C++ sử dụng jsoncpp để giải mã một chuỗi JSON. Tôi đã tạo ra các chức năng sau đây nhưng nó chỉ cho tôi thấy các đối tượng cấp cao nhất ...lặp lại thông qua các đối tượng trong JsonCpp
Làm thế nào để có được nó để đổ toàn bộ danh sách đối tượng?
--Function--
SaveJSON(json_data);
bool CDriverConfigurator::PrintJSONTree(Json::Value & root, unsigned short depth /* = 0 */)
{
printf(" {type=[%d], size=%d} ", root.type(), root.size());
if(root.size() > 0) {
for(Json::ValueIterator itr = root.begin() ; itr != root.end() ; itr++) {
PrintJSONTree(itr.key(), depth+1);
}
return true;
}
// Print depth.
for(int tab = 0 ; tab < depth; tab++) {
printf("-");
}
if(root.isString()) {
printf(" %s", root.asString().c_str());
} else if(root.isBool()) {
printf(" %d", root.asBool());
} else if(root.isInt()) {
printf(" %d", root.asInt());
} else if(root.isUInt()) {
printf(" %d", root.asUInt());
} else if(root.isDouble()) {
printf(" %f", root.asDouble());
}
else
{
printf(" unknown type=[%d]", root.type());
}
printf("\n");
return true;
}
--- Input ----
{
"modules":[
{
"config":{
"position":[
129,
235
]
},
"name":"Modbus Task",
"value":{
"DeviceID":"This is the name",
"Function":"01_READ_COIL_STATUS",
"Length":"99",
"Scan":"111",
"Type":"Serve"
}
},
{
"config":{
"position":[
13,
17
]
},
"name":"Modbus Connection",
"value":{
"Baud":"9600",
"timeout":"2.5"
}
},
{
"config":{
"position":[
47,
145
]
},
"name":"Modbus Device",
"value":{
"DeviceID":"55"
}
},
{
"config":{
"position":[
363,
512
]
},
"name":"Function Something",
"value":{
}
},
{
"config":{
"position":[
404,
701
]
},
"name":"Function Something",
"value":{
}
}
],
"properties":{
"Blarrg":"",
"description":"",
"name":"Modbus"
},
"wires":[
{
"src":{
"moduleId":1,
"terminal":"modbus.connection.output"
},
"tgt":{
"moduleId":2,
"terminal":"modbus.connection.input"
}
},
{
"src":{
"moduleId":2,
"terminal":"modbus.device.output"
},
"tgt":{
"moduleId":0,
"terminal":"modbus.device.output"
}
},
{
"src":{
"moduleId":3,
"terminal":"dataOut"
},
"tgt":{
"moduleId":4,
"terminal":"dataIn"
}
},
{
"src":{
"moduleId":3,
"terminal":"dataIn"
},
"tgt":{
"moduleId":0,
"terminal":"data1"
}
}
]
}
--Output--
{type=[7], size=3} {type=[4], size=0} - modules
{type=[4], size=0} - properties
{type=[4], size=0} - wires
Chính xác những gì tôi đang tìm kiếm. Cảm ơn bạn. –
@Steven smethurst: Điều thực sự thú vị là tôi chưa từng xem thư viện đó trước đây trong cuộc đời mình. :-) – Omnifarious
@cegprakash: Tại sao bạn xóa thẻ 'tham chiếu'? – Omnifarious