场景
在开发中,需要对部分信息进行阶段性保存,后续也需要读取,为方便使用,决定将信息转换为json,在使用中方便利用json的特性进行添加与修改
String互转JSON
String转换JSON时采用JSON.parse 方法 JSON转换String时采用JSON.stringify方法
let str= "";
let str_json = JSON.parse(str);
console.log("str_json ="+JSON.stringify(str_json)); //报错
str= "{}";
str_json = JSON.parse(str);
console.log("str_json ="+JSON.stringify(str_json)); //打印 {}
说明:要将数据转换为json类的前提是需要数据满足基本的json格式,即使为空,也需要满足基本格式
JSON数据处理
let str= "{\"channel\":0,\"err\":1}";
let str_json = JSON.parse(str);
//读取JSON中的子元素
console.log("str_json ="+JSON.stringify(str_json));//打印 str_json ={"channel":0,"err":1}
console.log("str_json channel="+str_json.channel);//打印 str_json channel=0
console.log("str_json err="+str_json.err); //打印 str_json err=1
//设置JSON中的子元素
str_json.name = "test";
str_json.channel = 1;
str_json.err = "3";
console.log("str_json ="+JSON.stringify(str_json)); //打印 str_json ={"channel":1,"err":"3","name":"test"}
//说明:添加name元素时自动添加,修改时不论值类型如何,以设置类型为准
JSON多维数据
以二维数据为例
function addtest(str_1,channel,err){
let json_tem = str_1 ;
let arr =
{
"channel" : channel,
"err" : err
};
json_tem.push(arr);
return json_tem;
}
function test_1(){
let str= "[{\"channel\":0,\"err\":0}]";
let str_json = JSON.parse(str);
str_json = addtest(str_json,0,2)
console.log("str_json ="+JSON.stringify(str_json)); //打印 str_json =[{"channel":0,"err":0},{"channel":0,"err":2}]
}
说明:二维数组添加时,不会根据key-value相同而直接更新,如有需要需要自动更新,简要的更新代码如下
更新 addtest中信息
function addtest(str_1,channel,err){ //json添加字符
let json_tem = str_1 ;
let arr =
{
"channel" : channel,
"err" : err
};
//添加如下代码
for(k=0;k<json_tem.length;k++){
if(json_tem[k].channel == channel){
json_tem[k].err = err;
break;
}
if(k==json_tem.length-1){
json_tem.push(arr);
}
}
return json_tem;
}
function test_1(){
let str= "[{\"channel\":0,\"err\":0}]";
let str_json = JSON.parse(str);
str_json = addtest(str_json,1,2)
console.log("str_json ="+JSON.stringify(str_json));
str_json = addtest(str_json,1,9)
console.log("str_json ="+JSON.stringify(str_json));
}
//打印信息
//str_json =[{"channel":0,"err":0},{"channel":1,"err":2}]
//str_json =[{"channel":0,"err":0},{"channel":1,"err":9}]
|