2012-02-12 4 views
-1

Я пытаюсь разобрать JSON в JavaScript. Если мои данные JSON выглядят ниже, я хочу перебрать все элементы JSON, которые начинаются с «custom», а не с любой другой строки. Как мне это сделать?JSON разбор в javascript

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

Ваш JSON не является действительным, http://jsonlint.com/ – Sarfraz

+0

не должны 'fields' быть массивом? –

+1

@DaveNewton: Нет прямых пар ключ-значение, если они не получают вложенные данные. – Sarfraz

ответ

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

следующая итерация properties из в fields объекта и проверяют, содержит ли имя свойства custom:

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> 
Смежные вопросы