怎么判断json元素是相对于根的子节点还是孙子节点?
json={
'students':{
'student':{
'name':'zhangsan',
'age',11,
'address':{
'city':'beijing'
}
}
}
怎么判断student是子节点,name是孙子节点,city是曾孙节点?
------解决方案--------------------
function _type(obj){
/// <summary>
/// 返回数据类型的小写副本
/// </summary>
/// <param name="obj">目标对象</param>
/// <returns>目标对象的数据类型的小写副本:string,date,number,array,boolean,object,regexp,function...</returns>
return Object.prototype.toString.call(obj).match(/^\[object\s(.*)\]$/)[1].toLowerCase();
}
function getNS(ns,json,named){
var keyNamed;
for(var key in json){
if(json.hasOwnProperty(key)){
keyNamed = named + '.' + key;
if(_type(json[key])=='object'){
ns[keyNamed] = '{}';//如果不想保留非值类型的结构,删除这句
getNS(ns,json[key],keyNamed);
}else{
ns[keyNamed] = _type(json[key])=='array'
? json[key].join(',')
: json[key];
};
}
};
return ns;
};
var ns=getNS({},json,"json");
还是没搞明白这个是做什么用的,能说下么?
上面的ns即可生成值类型[数组也被包含在内,生成连接符为,的字符串]的结构描述,这东东要是碰上两个值相同的,上哪查去呀
以你的例子来说,ns结构为:
ns={
"json.name": "zhansan",
"json.age": 23,
"json.address": "{}",
"json.address.city": "beijing",
"json.address.year": "气态流出物月报,0,1",
"json.address.gas": "{}",
"json.address.gas.gasSheet": "气态流出物月报",
"json.address.gas.H_adjust": 1,
"json.address.gas.employer": "{}",
"json.address.gas.employer.midle": "sizhong",
"json.address.gas.employer.hight": "sizhong",
"json.address.time": "{}",
"json.address.time.year": "气态流出物月报,0,1",
"json.address.time.start": "1,~",
"json.address.time.duration": 31,
"json.address.time.employer": "{}",
"json.address.time.employer.midle": "sizhong",
"json.address.time.employer.hight": "sizhong",
"json.student": "13,s1,s2",
"json.units": "{}",
"json.units.title": "function"
}