var jsonStr = '{"name":"Tom","Age":23}'
var jsonArray = '[{"name":"Tom","Age":23},{"name":"Tom","Age":23},{"name":"Tom","Age":23}]'
1.字符串解析为对象 jsonStr->Object
//parseJSON是jQuery的方法,原生Qml不支持
var obj = jsonStr.parseJSON()
//QML原生支持此方法
var obj = JSON.parse(jsonStr)
function strToObj(jsonStr){
var obj = JSON.parse(jsonStr)
return obj
}
2.json对象转成jsonStr
//IE8以上支持
var str = obj.toJSONString()
//Qml原生支持此方法
var str = JSON.stringify(obj)
//QML function
function objToStr(obj){
var str = JSON.stringify(obj)
return str
}
3.字符串转数组对象
/*
** 原理:先把数组字符串转换成数组对象,parseJSONString
*/
//1.使用JsonPath
function parseJSONString(jsonString, jsonPathQuery) {
var objectArray = JSON.parse(jsonString);
if ( jsonPathQuery !== "" )
objectArray = JSONPath.jsonPath(objectArray, jsonPathQuery);
return objectArray;
}
//2.获取数组对象返回值
var objectArray = parseJSONString(json, query);
//3.遍历数组对象,添加到QML的ListModel,这里的key是一个整型值
for ( var key in objectArray ) {
var jo = objectArray[key];
jsonModel.append( jo );
}
4.数组字符串 与 对象字符串
var jsonArray = '[
{"name":"Gomnn"},
{"name":"Tmmmm"},
{"name":"Doijrg"},
{"name":"Arggg"}
]'
var jsonObj = '{
"PassWord":[
{"name":"Libai"},
{"name":"Kifhsf"}
],
"version":0.01,
"data":2019
}'
5.从json对象中解析出特定的json数组对象
function getArray(jsonString,field){
var jsObject = JSON.parse(jsonString)
for ( var key in jsObject ) {
if(key === field){
return jsObject[key]
}
}
}
6.关于json数组对象中的对象排序方式.
由此看出,json数组内的对象并没有重新排序.
7.从json数组对象中获取相关的值.
function getValue(jsonArrayObj,index,query){
return jsonArrayObj[index][query]
}
8.从对象中获取它的键值索引list
function getKeyList(obj){
var arr=[];
for (var k in obj){
arr.push(k)
}
return arr
}
9.修改值并返回字符串
//1.修改数组对象的值
function midifyArrayValue(data){
}
//2.修改对象中的值
function setJsonObjectValue(obj,index,value){
obj[index] = value
return obj
}
10.对象写入(文件、对象)
//将对象写入到本地文件
function saveDataToFile(filepath,fileName,data){
}
//将对象写入到json对象
function saveDataToObj(target,data){
target = data
}
//将对象写入到json数组中
function saveDataToArray(array,index,data){
array[index] = data
}
//将对象插入到json数组中
function insertDataToArray(array,index,data){
array.push(data)
}
//将数组写入到json对象
function saveArrayToData(target,key,array){
target[key] = array
}
//将数组插入到json对象
function insertArrayToData(target,key,array){
target[key] = array
}
//将字符串写入到本地文件
function saveDataToFile(filepath,fileName,str){
var file = filepath+fileName
fileIo.save(file , str)
}
011.Json转ListModel
//普通json对象插入到model
function toListModel(json, parent){
var model = Qt.createQmlObject('import QtQuick 2.2; ListModel{}', parent);
model.append(json);
return model;
}
// json对象转化为ListModel对象
// 如例子3
// json格式规范:内部必须含有一个数组,或者本身这个就是一个json数组
12递归输出json text
// 用递归输出json text(有问题的,需要优化)
function toStr2(obj){
var txt = '';
for (var k in obj){
if(typeof k === "object") {
txt += toStr2(obj[x]);
}
else{
txt += k + ":" + obj[x];
}
txt += ' ';
}
return txt;
}
13.创建元素
//json对象创建元素
function creatJsonElement(prop,val){
if(typeof val === "undefined") {
delete str1[prop];
}else {
// 添加 或 修改
str1[prop] = val;
}
}