资讯详情

[QML][Json] QML下Json增删查改

QML下Json相关

qml json 解析 字符串化

Qml下,提供了JSON帮助完成对象json对象的生成和字符串化.

  • 一.Json对象的生成

    • 1.借助函数从字符串分析 JSON.parse(text[, reviver])

      1.1 参数

      text字符串需要分析

      reviver 可选函数参数,parse在分析过程中,每个对象掉用该函数.

      1.2 只传入text调用

      var jsonStr="{\"k1\":\"v1\",\"k2\":\"v2\",\"o2\":{\"ok1\":\"ov1\"},\"ak1\":[\"av1\",\"av2\"]}" var json=JSON.parse(jsonStr) 

      上述json即分析json对象,可使用该对象对json访问和修改的一系列操作

      1.3 传入text 和reviver调用()

      声明函数打印对象的函数key和value

      function printJson(k,v){   console.log("k: " k);   console.log("v: " v); } 

      如下调用

      var jsonStr="{\"k1\":\"v1\",\"k2\":\"v2\",\"o2\":{\"ok1\":\"ov1\"},\"ak1\":[\"av1\",\"av2\"]}"; var json=JSON.parse(jsonStr,printJson); 
    • 2.通过赋值定义json对象

      形式如下:

      var json={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"ak1":["av1","av2","aqv3"]} 

      这样就直接得到了一个json对象

  • 二.Json对象的字符串

    • 由json对象转化为string字符串 ***JSON.stringify(value[, replacer[, space]])***

      1.参数

      value 需要转换的json对象可以通过一种方式获得

      replacer 可以传入函数也可以传入数组

      space 格式输出参数可以是数字或其他字符.

      2.只传入value

      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]} var jsonStr=JSON.stringify(json) console.log(jsonStr)  //输出如下: /* qml: {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]} */ 

      3.replacer使用

      函数接收json子对象的key和value,返回值会对json修改子对象的值;返回 undefined当对应子对象的字符串化时,.PS 原json对象不会被修改

      varvar json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]} //返回 undefined 对应子对象的字符串化将被忽略,PS 'return'等同于 'return undefined' //返回其他值 对应子对象的值将在字符串化时被替换 jsonStr=JSON.stringify(json,function(k,v){             if(k==="k2"){//忽略对 k二子对象字符串化                 return undefined         //return //和return undefined等价       }       if(k==="ok1"){///替换初始化值                 return "change value"       }             return v         }) console.log(jsonStr) jsonStr=JSON.stringify(json)//原 json不会被改变 console.log(jsonStr)  //输出如下: /* qml: {"k1":"v1","o1":{"ok1":"change value"},"a1":["av1","av2"]} qml: {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]} */ 

      4.space使用

      本质是在每个对象面前换行,并根据space填写格式化字符;为数字时,格式化字符为space指定数量的" ",其他字符直接填写指定字符时.

      PS与上一级相比,填写的格式化字符将与上一级相比插入两次。

      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]} var jsonStr=JSON.stringify(json,null,1) console.log("1 space:\n",jsonStr) jsonStr=JSON.stringify(json,null,4) console.log("4 space:\n",jsonStr) jsonStr=JSON.stringify(json,null,'\t') console.log("\\t:\n",jsonStr) jsonStr=JSON.stringify(json,null,"format") console.log("some str:\n",jsonStr)  //输出如下: /* qml: 1 space:  {  "k1": "v1",  "k2": "v2",  "o1": {   "ok1": "ov1"  },  "a1": [   "av1",   "av2"  ] } qml: 4 space:  {     "k1": "v1",     "k2": "v2",     "o1": {         "ok1": "ov1"     },     "a1": [         "av1",         "av2"     ] } qml: \t:  {  "k1": "v1",  "k2": "v2",  "o1": {   "ok1": "ov1"  },  "a1": [   "av1",   "av2"  ] } qml: some str:  { format"k1": "v1", format"k2": "v2", format"o1": { formatformat"ok1": "ov1" format}, format"a1": [ formatformat"av1", formatformat"av2" format] } */ 
  • 三.Json对象对子对象的操作

    • 1.访问子对象,获取子对象的值

      1.1使用下标,即使用"[]"操作符

      直接在"[]"内输入子对象key值可以,一般对象key值为字符串,数组为数组索引

      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]} console.log("k2 :",json["k2"]); console.log("o1 :",json["o1"]);//直接返回 对象 {"ok1":"ov1"} console.log("ok1 :",json["o1"]["ok1"]); console.log("a1 :",json["a1"]);//直接返回 数组 ["av1","av2"] console.log("av1 :",json["a1"][0]);  //输出如下: /* qml: k2 : v2 qml: o1 : [object Object] qml: ok1 : ov2 qml: a1 : [av1,av2] qml: av1 : av1 */ 

      1.2使用"."操作符访问

      直接在"[]"内输入子对象key值可以,一般对象key值为字符串,数组为数组索引

      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov2"},"a1":["av1","av2"]} console.log("k2 :",json.k2); console.log("o1 :",json.o1);//直接返回 对象 {"ok1":"ov1"} console.log("ok1 :",json.o1.ok1); consoe.log("a1 :",json.a1);//直接返回 数组 ["av1","av2"]
      console.log("av1 :",json.a1[0]);//数组内元素不能直接以".0"方式访问
      
      //输出如下:
      /*
      qml: k2 : v2
      qml: o1 : [object Object]
      qml: ok1 : ov2
      qml: a1 : [av1,av2]
      qml: av1 : av1
      */
      
    • 2.修改已有子对象的值

      修改子对象的值,和获取的方式一致,只是把对象作为左值就可

      2.1使用下标的方式,即使用"[]"操作符

      直接在"[]"内输入子对象的key值即可,一般对象key值为字符串,数组内则为数组索引,然后直接等号赋值即可

      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      json["k2"]="new v2";
      console.log("change k2 :",JSON.stringify(json));
      json["o1"]["ok1"]="new ov1";
      console.log("change ok1 :",JSON.stringify(json));
      json["o1"]="new o1"
      console.log("change o1 :",JSON.stringify(json));
      json["a1"][0]="new av1"
      console.log("change av1 :",JSON.stringify(json));
      json["a1"]="new a1"
      console.log("change a1 :",JSON.stringify(json));
      
      //输出如下:
      /*
      qml: change k2 : {"k1":"v1","k2":"new v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      qml: change ok1 : {"k1":"v1","k2":"new v2","o1":{"ok1":"new ov1"},"a1":["av1","av2"]}
      qml: change o1 : {"k1":"v1","k2":"new v2","o1":"new o1","a1":["av1","av2"]}
      qml: change av1 : {"k1":"v1","k2":"new v2","o1":"new o1","a1":["new av1","av2"]}
      qml: change a1 : {"k1":"v1","k2":"new v2","o1":"new o1","a1":"new a1"}
      */
      

      2.2使用"."操作符方式

      直接在"[]"内输入子对象的key值即可,一般对象key值为字符串,数组内则为数组索引

      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      json.k2="new v2";
      console.log("change k2 :",JSON.stringify(json));
      json.o1.ok1="new ov1";
      console.log("change ok1 :",JSON.stringify(json));
      json.o1="new o1"
      console.log("change o1 :",JSON.stringify(json));
      json.a1[0]="new av1"//数组内元素不能直接以".0"方式访问
      console.log("change av1 :",JSON.stringify(json));
      json.a1="new a1"
      console.log("change a1 :",JSON.stringify(json));
      
      //输出如下:
      /*
      qml: change k2 : {"k1":"v1","k2":"new v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      qml: change ok1 : {"k1":"v1","k2":"new v2","o1":{"ok1":"new ov1"},"a1":["av1","av2"]}
      qml: change o1 : {"k1":"v1","k2":"new v2","o1":"new o1","a1":["av1","av2"]}
      qml: change av1 : {"k1":"v1","k2":"new v2","o1":"new o1","a1":["new av1","av2"]}
      qml: change a1 : {"k1":"v1","k2":"new v2","o1":"new o1","a1":"new a1"}
      */
      
    • 3.新增子对象

      新增子对象的值,和修改的方式一致,只是赋值的的对象原本不存在

      2.1使用下标的方式,即使用"[]"操作符

      直接在"[]"内输入子对象的key值即可,一般对象key值为字符串,数组内则为数组索引,然后直接等号赋值即可

      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      json["k3"]="v3";
      console.log("add k3 :",JSON.stringify(json));
      json["o2"]={"ok1":"ov1"};
      console.log("add o2 :",JSON.stringify(json));
      json["a2"]=["av1","av2"]
      console.log("add a1 :",JSON.stringify(json));
      json["a1"][2]="av3"
      console.log("add av3 :",JSON.stringify(json));
      
      //输出如下:
      /*
      qml: add k3 : {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"],"k3":"v3"}
      qml: add o2 : {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"],"k3":"v3","o2":{"ok1":"ov1"}}
      qml: add a1 : {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"],"k3":"v3","o2":{"ok1":"ov1"},"a2":["av1","av2"]}
      qml: add av3 : {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2","av3"],"k3":"v3","o2":{"ok1":"ov1"},"a2":["av1","av2"]}
      */
      

      2.2使用"."操作符方式

      直接在"[]"内输入子对象的key值即可,一般对象key值为字符串,数组内则为数组索引

      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      json.k3="v3";
      console.log("add k3 :",JSON.stringify(json));
      json.o2={"ok1":"ov1"};
      console.log("add o2 :",JSON.stringify(json));
      json.a2=["av1","av2"]
      console.log("add a1 :",JSON.stringify(json));
      json.a1[2]="av3"
      console.log("add av3 :",JSON.stringify(json));
      
      //输出如下:
      /*
      qml: add k3 : {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"],"k3":"v3"}
      qml: add o2 : {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"],"k3":"v3","o2":{"ok1":"ov1"}}
      qml: add a1 : {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"],"k3":"v3","o2":{"ok1":"ov1"},"a2":["av1","av2"]}
      qml: add av3 : {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2","av3"],"k3":"v3","o2":{"ok1":"ov1"},"a2":["av1","av2"]}
      */
      
    • 4.删除已有子对象

      删除子对象的值,有两种方式

      3.1给要删除的对象赋值为 undefined ,操作方式和修改已有子对象的值方法一致.详见三.2

      //删除示例,只举一个,操作方式和修改已有子对象的值方法一致.详见三.2
      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      json.k1=undefined
      console.log(JSON.stringify(json))
      
      //输出如下:
      /*
      qml: {"k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      */
      

      3.2使用 delete 直接删除要删除的对象即可,具体操作是在访问对象的语句前加 delete.

      //删除示例,只举一个,其他只要把delete 后的替换成其他访问对象语法就好
      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      delete json.k1
      console.log(JSON.stringify(json))
      
      //输出如下:
      /*
      qml: {"k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      */
      
      

      3.3json数组内对象的删除

      json数组内对象的删除其实和其他删除方式一致,但要多出一个步骤,总的来说json数组内的对象的删除和qml单独一个数组的删除方式是一致的

      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      json.a1[0]=undefined;
      console.log(JSON.stringify(json))
      json.a1.splice(0,1)//0指开始索引,1指删除数量
      console.log(JSON.stringify(json))
      
      //输出如下:
      /*
      qml: {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":[null,"av2"]}
      qml: {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av2"]}
      */
      
      //直接调用splice也可以
      var json ={"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av1","av2"]}
      json.a1.splice(0,1)
      console.log(JSON.stringify(json))
      //输出如下:
      /*
      qml: {"k1":"v1","k2":"v2","o1":{"ok1":"ov1"},"a1":["av2"]}
      */
      

标签: aqv光耦继电器aqv201ax电磁继电器aqv252g3a固态继电器aqv234a固态继电器aqv210ls固态继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台