2012-02-12 86 views
-1

我想解析JavaScript中的JSON。如果我的JSON数据如下所示,我想遍历所有以“custom”开头而不是任何其他字符串的JSON元素。我该怎么做呢?在javascript中解析JSON

{ 
    "fields": { 
     "custom12": { 
      value: "dsada" 
     }, 
     "custom45": { 
      value: "adsadad" 
     }, 
     "test12": { 
      value: "12323" 
     } 
    } 
}​ 
+1

您的JSON是无效的,http://jsonlint.com/ – Sarfraz 2012-02-12 16:56:32

+0

不应该'fields'是数组? – 2012-02-12 16:57:26

+1

@DaveNewton:除非获得嵌套数据,否则不要使用直接的键值对。 – Sarfraz 2012-02-12 17:00:35

回答

0
var newObject = {}, key; 
for(key in data.fields){ 
    if(key.search(/custom/) > -1){ 
    newObject[key] = data.fields[key]; 
    } 
} 
console.log(newObject); 
0

以下迭代的fields对象和检查属性的名称是否包含了propertiescustom

var data = yourObjectLiteral, i, current; 

for(i in data.fields) { 
    if(i.indexOf('custom') > -1) { 

    current = data.fields[i]; 

    // ... your logic ... 
    } 
} 
0

有了你提供我会做这样的JSON字符串:

<script src="json2.js"></script> 
<script> 
var raw = '{' 
+ ' "fields": {' 
+ ' "custom12": {' 
+ ' "value": "dsada"' 
+ ' },' 
+ ' "custom45": {' 
+ ' "value": "adsadad"' 
+ ' },' 
+ ' "test12": {' 
+ ' "value": "12323"' 
+ ' }' 
+ ' }' 
+ '}'; 
var data = JSON.parse(raw); 
var fields = data.fields; 
var message = ''; 
for (var key in fields) { 
    if (key.indexOf('custom') === 0) { 
     message += key + ': ' + fields[key].value + '\n'; 
    } 
} 
alert(message); 
</script> 

但是,如果你可以重新编写消息,看起来会更简单。

<script src="json2.js"></script> 
<script> 
var raw = '{' 
+ ' "custom12": "dsada",' 
+ ' "custom45": "adsadad",' 
+ ' "test12": "12323"' 
+ '}'; 
var fields = JSON.parse(raw); 
var message = ''; 
for (var key in fields) { 
    if (key.indexOf('custom') === 0) { 
     message += key + ': ' + fields[key] + '\n'; 
    } 
} 
alert(message); 
</script>