node表是:(ID string,NODE string)
自己的处理:利用jsoncpp,做了一个插入函数
bool ObjManagement::AddJson(string JsonStr)
{
Json::Reader reader;
Json::Value json_object;
reader.parse(JsonStr, json_object, false);
string jsonID = json_object["ID"].toStyledString();
cout <<"解析到的jsonID:"<< jsonID << endl;
string jsonobj = json_object["AVP_LIST"].toStyledString();
string sqlInsert = "insert into node values(" + jsonID + ",\"" + jsonobj.c_str() +"\");";
cout << "拼接成的sqlInsert:" << sqlInsert << endl;
sqlite3_exec(pdb, sqlInsert.c_str(), 0, 0, &errMsg);
if (errMsg)
{
cout << "ObjManagement: \t sqlInsert:\t" << errMsg << endl;
return false;
}
return true;
}
main函数如下
int main()
{
DataBaseManagement *dbm = new DataBaseManagement();
ObjManagement *omg = new ObjManagement();
string strjson = "{\"ID\": \"6851950\", \"AVP_LIST\": [{\"ATTRIBUTE\": \"中文名\", \"VALUE\": \"吴映洁\"}]}";
cout<<strjson<<endl;
omg->AddJson(strjson);
dbm->CloseDb();
getchar();
}
得到的结果:
我是把json写在一个文本里,,然后读取文本里的json,对它进行操作,没有报错,具体原因,我也不太清楚。主要的原因可能是我一开始那个json格式写的不规范,有错误吧。也特别感谢@Windoze ,sql确实要注意用单引号的问题,我程序的其他模块有的地方就是没写成单引号而出错。
f.open("E:\\test.txt");
if (!f)
cout << "error";
//解析Json的方法
Json::Reader reader;
Json::Value json_object;
reader.parse(f, json_object, false);
f.close();
test.txt里的内容:
{"ID": "394557", "AVP_LIST": [{"ATTRIBUTE": "topic_equivalent_webpage", "VALUE": "http://baike.baidu.com/
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。