微信小程序--Json生成与解析(顺便带上QT)
2020-10-14 本文已影响0人
聊者说
聊者说
开发小程序的时候,经常会遇到Json生成与解析
今天一个UDP通信的微信小程序项目(QT-小程序)刚好用到,为了加深记忆,做个简要记录。
将Json对象解析为字符串
1、QT端生成Json
// 反馈
QJsonObject jsonData;
jsonData.insert("lamp", 6);
jsonData.insert("motor", 0);
jsonData.insert("laser", 0);
QJsonObject json;
json.insert("uri", QString("uri/getStatus"));
json.insert("data", jsonData);
QJsonDocument document;
document.setObject(json);
const QByteArray data = document.toJson(QJsonDocument::Compact);
appUdpClientServer->udpWriteData(data);
2、小程序端 JSON.stringify
this.data.udpSocket.onMessage(function (res) {
console.log('remoteInfo.size ===' + res.remoteInfo.size)
if (res.remoteInfo.size > 0) {
console.log('UDP接收数据 ' + res.remoteInfo.size + ' 字节:' + JSON.stringify(res, null, '\t'))
let unit8Arr = new Uint8Array(res.message);
let encodedString = String.fromCharCode.apply(null, unit8Arr);
let escStr = escape(encodedString);
let decodedString = decodeURIComponent(escStr);
// TODO 数据解析
let jsonObject = JSON.parse(decodedString);
console.log('jsonObject===' + jsonObject)
if ("dhp/wxApp/getStatus" === jsonObject.uri) {
// TODO
}
}
})
将Json字符串解析成Json对象
1、小程序端 JSON.parse
setMotorData(type) {
var objMessage = {
uri:"uri/setMotorMoveType",
data:{
type:type,
}
}
this.data.mydata.message = JSON.stringify(objMessage);
},
2、QT端解析Json
QString json_str(bytes);
if (json_error.error == QJsonParseError::NoError)
{
if (parse_doucment.isObject())
{
QJsonObject obj = parse_doucment.object();
if (obj.contains("uri"))
{
QJsonValue uri_value = obj.take("uri");
if (uri_value.isString())
{
QString uri = uri_value.toString();
// TODO
QLOG_INFO() << "uri == " << uri << "]." << endl;
}
}
}
}
感谢大家看完,更多精彩等待下次创作,你最大的支持就是:赞同+评论+赞赏+...,关注我。
另外,也欢迎大家关注我的个人公众号 “聊者说”。