2012-02-12 68 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>