(1)前端js解析前端json数据:
one:
定义一个json对象变量:
var jsonobject={};
赋值json对象的key-value值:
jsonobject[key]=value;
遍历json对象1:
var jsonobject={"name":"张三","sex":"女",..}
//1.获取key-value方法(不知道key值的情况):
for(var key in jsonobject){
alert(key);//获取json对象的key
alert(jsonobject[key]);//获取json对象key对应的value值
}
//2.获取value方法(知道key值的情况):
alert(jsonobject.name);
alert(jsonobject.sex);
遍历json对象2:
var jsonobject={
"0":{"name":"2","sex":"1"},
"1":{"name":"3","sex":"7"}
};
for(var key in jsonobject){
alert(key);//获取key
for(var subkey in jsonobject[key]){
alert(jsonobject[key].name)//获取具体key的value值
alert(subkey);//获取子key
//获取subkey的value值(下面方法行不通,返回的是undefined)
// alert(jsonobject[key][subkey]);
//正确获取subkey的value值
alert(eval("jsonobject[key]."+subkey));
}
}
two:
定义一个json数组:
var jsonarray=[];
赋值json数组值:
var json={
"name":"1",
"sex":"3"
};
var json2={
"name":"5",
"sex":"7"
};
jsonarray.push(json);
jsonarray.push(json2);
遍历json数组:
for(var i=0;i<jsonarray.length;i++){//或者使用for(var subkey in jsonarray)
alert(jsonarray[i].name)//获取json数组key对应的value
for(var key in jsonarray[i]){
alert(key);//获取json对象key
alert(jsonarray[i][key])//获取json对象value
}
}
(2) 前端js解析后端json数据字符串
后端传来的json字符串:
jsonstr=[{"RES":"OK","MSG":"success"}]
或
jsonstr=[{..},{..},[{..},{..}]]
解析:
var jsonArray=JSON.parse(jsonstr);//一般使用这种方法,不会出什么问题
或
var jsonArray=eval('('+jsonstr+')');//此方法不建议用来转json
或
var jsonArray=jsonstr.parseJSON();//此方法容易抛语法上的异常,不建议使用
var jsonobj=jsonArray[i]//赋值给jsonobj变量,对应的是第i个jsonArray值(可以是jsonarray或者jsonobject)
遍历解析同(1)前端js解析前端json数据;
(3)json对象转为json字符串
toJSONString()或者 JSON.stringify(),多用于由前端请求后端发送ajax请求data参数,
例如:
$.ajax({
type: "POST",
url: '/MES/PostServlet',
data: JSON.stringify({
tokenID: formBuilderToken,
schema: formBuilderSchema,
funCode: formPageFunCode,
funData: JSON.stringify({
func: 'doProcedure',
params: param,
ObjI_Button: formBuilderquery
})
}),