js解析json字符串

开源中国首席恶棍 发布于 2012/08/31 15:38
阅读 21K+
收藏 0

Serverless 架构就不要服务器了?>>>

{
 states:{
  rect1:{
   TYPE:'T1',
   TEXT:{TEXT:'txt1'}
  },
  rect2:{
   TYPE:'T2',
   TEXT:{TEXT:'txt2'}
  },
  rect3:{
   TYPE:'T3',
   TEXT:{TEXT:'txt2'}
  }
 }
}
说明:其中这个rect1,rect2,rect3,... rectN关键字,是随机生成的,没有啥规律
我想获得每一个rect里面的type值是多少,但是因为每一个rect的名字是不固定的,
我怎么获得里面的type呀?
如果rect的名字是固定的,我能用var json = eval("("+jsonStr+")");alert(json.states.rect1.type)得到
但是现在rect1不能写死啊。
加载中
1
bonjour
bonjour
循环key: (for key in json.states)
1
小小流浪猫
小小流浪猫

$.each(data,function(index,val){

$.each(val,function(index2,val2){

alert(val2.type);

})

})

我在哪
这个方法比较好
0
景愿
景愿

LZ为何不换一个思路:

{"states":

  [

    {"rect1":{}},

    {"rect2":{}},

    {"rect3":{}},

    ...

    {"rectn":{}}

]

}

这样一搞,你好,他也好

0
xu81.com
xu81.com

引用来自“Liuxey”的答案

LZ为何不换一个思路:

{"states":

  [

    {"rect1":{}},

    {"rect2":{}},

    {"rect3":{}},

    ...

    {"rectn":{}}

]

}

这样一搞,你好,他也好

是啊,明明是一个数组,为何要弄成属性?
0
星之月
使用关联数组访问:states["rect"+3].TYPE
0
Java研究者
Java研究者

拼接字符串,

var json = eval("("+jsonStr+")");

var reatN = rect+//你的随机数

alert(json.states.rectN.type);

0
serenity
serenity

引用来自“bonjour”的答案

循环key: (for key in json.states)
正解
Cavalier
Cavalier
+1
0
北河
北河
var json = eval("("+jsonStr+")");
var states = json.states;
for(var name in states){
    alert(states[name].TYPE);
}
J
Jemc
这个正解啊,谢谢
0
阿伏流
阿伏流

引用来自“Liuxey”的答案

LZ为何不换一个思路:

{"states":

  [

    {"rect1":{}},

    {"rect2":{}},

    {"rect3":{}},

    ...

    {"rectn":{}}

]

}

这样一搞,你好,他也好

 = =Json好,才是真的好
0
开源中国首席恶棍
开源中国首席恶棍
多谢各位,最后这么解决了:
var j = jsonStr.states;
for (var a in j) {
for(var b in j[a]){
if(j[a][b] instanceof  Object){
break;
}else{
alert(j[a][b]);
}
}
}
返回顶部
顶部