关于jsoncpp和json-spirit的简单介绍已经有过了,但是BCOS中具体的应用可能还不那么简单,随着阅读源码的深入,本文长期更新:
jsoncpp:
NodeConnParamsManager.cpp
...
Json::Value resConn;
...
resConn.removeMember("NodeextraInfo");
//删除NodeextraInfo
resConn["NodeextraInfo"] = Json::Value(Json::arrayValue);
//重新建立NodeextraInfo初始化为一个空的json数组
for (auto const & param : _mConfNodeConnParams)
//范围迭代,对_mConfNodeConnParams中的每个元素均操作
{
Json::Value res;
res["Nodeid"] = param.second._sNodeId;
res["Agencyinfo"] = param.second._sAgencyInfo;
res["Peerip"] = param.second._sIP;
res["Port"] = param.second._iPort;
res["Identitytype"] = param.second._iIdentityType;
res["Nodedesc"] = param.second._sAgencyDesc;
res["Idx"] = static_cast<unsigned>(param.second._iIdx);
resConn["NodeextraInfo"].append(res);
}
//这段循环将_mConfNodeConnParams中的内容一一对应的加入数组NodeextraInfo中