int main()
{
/*
数组创建与分析:
例子一:
string strValue = "{\"ldh\":\"001\",\"gfc\":\"002\",\"yyj\":\"003\",\"andy\":[\"005\",\"123\",\"true\"]}";
Json::Reader read;
Json::Value value;
value["ldh"] = "001";
value["gfc"] = "002";
value["andy"].append( "005" );
value["andy"].append( "123" );
value["andy"].append( "true" );
//if( read.parse( strValue,value ) )
{
Json::Value val_array = value["andy"];
int iSize = val_array.size();
for ( int nIndex = 0;nIndex < iSize;++ nIndex )
{
cout<<val_array[nIndex]<<endl;
}
}
*/
/*
例子二:
Json::Reader read;
Json::Value value;
value["ldh"] = "001";
value["gfc"] = "002";
Value item;
Value array;
item["andy1"] = "005";
array.append( item );
item["andy1"] = "123";
array.append( item );
item["andy1"] = "true";
array.append( item );
value["andy"] = array;
cout<<value.toStyledString()<<endl;
Json::Value val_array = value["andy"];
int iSize = val_array.size();
for ( int nIndex = 0;nIndex < iSize;++ nIndex )
{
cout<<val_array[nIndex]<<endl;
if ( !val_array[nIndex]["andy1"].isNull() )
{
cout<<val_array[nIndex]["andy1"]<<endl;
}
}
*/
/*
例子三:
std::string strValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";
Json::Value value;
Reader read;
if ( !read.parse( strValue,value ) )
{
return -1;
}
cout<<value.toStyledString()<<endl;
Json::Value val_array = value["array"];
int iSize = val_array.size();
for ( int nIndex = 0;nIndex < iSize;++ nIndex )
{
cout<<val_array[nIndex]<<endl;
if ( val_array[nIndex].isMember( "cpp" ) )
{
cout<<val_array[nIndex]["cpp"]<<endl;
}
}
*/
getchar();
return 0;
}
起初使用jsoncpp的时候很别扭,例如第三个例子里面的数组有三项,在使用的时候我们却不能直接使用val_array[nIndex].asString.的确是没有搞清楚里面的格式.
总结一点:无论是哪种形式的数组,在解析的时候直接看看它对应索引的内容,我们就可以推导出其解析的方法.