JSON的全称是”JavaScript Object Notation”JS 对象简谱)
意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式
是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
2 Qt 5 新增加了处理 JSON 的类Qt 5 新增加了处理 JSON 的类,均以 QJson 开头,在 QtCore 模块中,不需要额外引入其它模块

1.提供了读写Json文档的方式
- JsonDocument::fromJson() ---------- 得到json文档对象
- 转换为json对象
object()-------------------对键值对操作 - 转换为json数组
array();
2.json字符串 -> json对象/json数组
3.json对象/json数组 -> json字符串
- 在使用json对象或json数组对象得到对应的value之后,该value值并不是最终的数据类型而是一个QJsonValue类型的属性,我们必须通过该对象判断该类型的实际类型,然后在将其转换为对应的数据类型:
- 类型判断相关的成员方法:
bool isArray() const 是否为json数组
bool isBool() const 是否为布尔类型
bool isDouble() const 是否为浮点类型
bool isNull() const 是否为空
bool isObject() const 是否为json对象
bool isString() const 是否为字符串类型
5 案例
json的读写
// 创建json对象
QJsonObject obj;
QJsonObject sub;
sub.insert("IP", QJsonValue("192.168.166.25"));
sub.insert("port", "9990");
obj.insert("server", QJsonValue(sub));
// 内存中的json数据写入内存
QJsonDocument doc(obj);
// 将json对象转换为 字符串
QByteArray data = doc.toJson();
// 字符串写入文件
QFile file("D:\\temp.json");
file.open(QIODevice::WriteOnly);
file.write(data);
file.close();
// 读json文件
QFile file("D:\\temp.json");
file.open(QIODevice::ReadOnly);
QByteArray data = file.readAll();
file.close();
// 使用json文档对象加载json字符串
QJsonDocument doc = QJsonDocument::fromJson(data);
// 判断是数组还是对象
if(doc.isObject())
{
QJsonObject obj = doc.object();
QJsonValue value = obj.value("server");
if(value.isObject())
{
QJsonObject subobj = value.toObject();
// 取值
QString ip = subobj.value("IP").toString();
QString port = subobj.value("port").toString();
qDebug() << ip << port;
}
}

















