首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

json节点有关问题

2014-01-08 
json节点问题本帖最后由 u013156418 于 2014-01-05 23:18:07 编辑怎么判断json元素是相对于根的子节点还是

json节点问题
本帖最后由 u013156418 于 2014-01-05 23:18:07 编辑 怎么判断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"
}

热点排行