2015-10-07 3 views
1

Предположим, что у меня есть массив JSON как:Как изменить или изменить определенный объект из массива JSON?

[{ 
    "box": "box1",  
    "parent": [{ 
     "id": "box0" 
    }], 
    "child": [{ 
     "id": "box2" 
    }] 
},{ 
    "box": "box2", 
    "parent": [{ 
     "id": "box1" 
    }], 
    "child": [{ 
     "id": "box3" 
    },{ 
     "id": "box4" 
    }] 
}] 

Теперь предположим, что я хочу, чтобы изменить значение parentid из box2 то, как я могу это сделать.

Как я могу конкретно изменить конкретное значение?

+0

насчет десериализации эта строка JSON для объекта, изменить значение в объекте и затем сериализовать этот объект? – PMerlet

+0

Любой пример поможет – Arti

ответ

1

var arr = [{ 
 
    'box': 'box1', 
 
    'parent': [{ 
 
    'id': 'box0' 
 
    }], 
 
    'child': [{ 
 
    'id': 'box2' 
 
    }] 
 
}, { 
 
    'box': 'box2', 
 
    'parent': [{ 
 
    'id': 'box1' 
 
    }], 
 
    'child': [{ 
 
    'id': 'box3' 
 
    }, { 
 
    'id': 'box4' 
 
    }] 
 
}]; 
 

 
arr = arr.map(function(box) { 
 
    if (box.box === 'box2') { 
 
    box.parent = [{ id: 'box0' }]; 
 
    } 
 
    
 
    return box; 
 
     
 
}); 
 

 
console.log(arr);

+0

Благодарим за быстрый ответ. Но это должно добавить новое значение. Я также хотел бы отредактировать существующее значение и удалить определенное значение. – Arti

+0

Вы уже можете сделать что-либо с фильтрованным полем. Не полагайтесь на SO за все, что вам нужно. – Orland

0

Вы можете десериализации этот JSON строку в JavaScript Object, изменить свойство в объекте, а затем сериализации объектов JavaScript в строку JSON:

var json = '[{"box":"box1","parent":[{"id":"box0"}],"child":[{"id":"box2"}]},{"box":"box2","parent":[{"id":"box1"}],"child":[{"id":"box3"},{"id":"box4"}]}]'; 
var obj = JSON.parse(json); 
obj[1].parent[0].id = "whatever"; 
var newjson = JSON.stringify(obj); 
Смежные вопросы