[Js]---字符串和对象,数组

本文详细介绍了如何在QML中解析和操作JSON数据,包括字符串转对象、对象转字符串、数组对象处理、值修改及数据写入等关键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值