当前位置: 代码迷 >> JavaScript >> json节点有关问题
  详细解决方案

json节点有关问题

热度:712   发布时间:2014-01-08 00:30:58.0
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"
}
  相关解决方案