首页 / JSON / jsoncpp转换类
jsoncpp转换类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了jsoncpp转换类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1757字,纯文字阅读大概需要3分钟。
内容图文
![jsoncpp转换类](/upload/InfoBanner/zyjiaocheng/1029/bd92ad0286f84588bd0df858c5598239.jpg)
文章目录
一个简单的jsoncpp转换类
qt下使用 jsoncpp 设计的 JsonParse 对象
class JsonParse
{
public:
JsonParse(Json::Value J)
:m_json(J)
{};
JsonParse(const void *V)
:m_str(V ? (const char*)V : "")
{};
JsonParse(const char *S)
:m_str(S ? S : "")
{};
JsonParse(const char *S, int L)
:m_str(S ? S : "", S ? L : 0)
{};
JsonParse(std::string S)
:m_str(S)
{};
virtual ~JsonParse(){};
public:
std::string toString(const char* indent="")
{
if(m_json.isObject() && m_json.getMemberNames().size() == 0)
return "";
else if(m_json.isString())
return m_json.asString();
Json::StreamWriterBuilder builder;
if(indent)
builder["indentation"] = indent; //The JSON document is written in a single line if indent == ""
return Json::writeString(builder, m_json);
};
const char* toCString(const char* indent="")
{
m_str = toString(indent);
return m_str.c_str();
};
bool toJson(Json::Value &J)
{
bool ret = false;
JSONCPP_STRING errs;
Json::CharReaderBuilder builder;
Json::CharReaderBuilder::strictMode(&builder.settings_);
//builder["collectComments"] = false; // true = 允许在反序列化的时候保存注释,然后在序列化的时候写回注释
Json::CharReader* reader = builder.newCharReader();
ret = reader->parse(m_str.data(), m_str.data() + m_str.size(), &J, &errs);
if(!ret || !errs.empty())
qDebug()<<"error、"<<endl;
if(reader){delete reader;reader = NULL;}
return ret;
}
std::string formatMinSize()
{
/*
* 仅支持构造入参为字符串的形式
* 如果是Json::Value的构造形式,可以直接格式化成指定的indent
*/
if(!m_str.empty())
toJson(m_json);
return toString();
}
private:
std::string m_str;
Json::Value m_json;
};
简单使用
QByteArray data = request.readBody();
Json::Value urlResp;
JsonParse(data.toStdString()).toJson(urlResp);
qDebug()<<"string:" <<QString(urlResp["string"].asCString()) <<endl;
内容总结
以上是互联网集市为您收集整理的jsoncpp转换类全部内容,希望文章能够帮你解决jsoncpp转换类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。