Как изменить значение внутри строки JSON - PullRequest
1 голос
/ 17 февраля 2011

У меня есть JSON строка массив таких объектов.

[{"id":"4","rank":"adm","title":"title 1"},
{"id":"2","rank":"mod","title":"title 2"},
{"id":"5","rank":"das","title":"title 3"},
{"id":"1","rank":"usr","title":"title 4"},
{"id":"3","rank":"ref","title":"title 5"}]

Я хочу изменить значение заголовка, когда идентификатор совпадает. Поэтому, если моя переменная myID равна 5, я хочу изменить заголовок «заголовок 5» на новый заголовок и так далее. И тогда я получаю новый массив JSON в $("#rangArray").val(jsonStr);

Что-то вроде

$.each(jsonStr, function(k,v) {
    if (v==myID) {
        this.title='new title'; $("#myTextArea").val(jsonStr);
    }
});

Вот полный код.

$('img.delete').click(function() {
var deltid = $(this).attr("id").split('_');
var newID = deltid[1];
var jsonStr = JSON.stringify(myArray);
$.each(jsonStr, function(k,v) {
if (v==newID) {
// how to change the title
jsonStr[k].title = 'new title';
alert(jsonStr);
$("#rangArray").val(jsonStr);
}
});
});

Выше не работает. Любая помощь, пожалуйста?

Ответы [ 3 ]

1 голос
/ 17 февраля 2011

Попробуйте это:

$.each(jsonStr, function(i,v) {
    if ( v.id == myID ) {
        v.title = 'new title';
        return false;
    }
});

Живая демоверсия: http://jsfiddle.net/CVvW4/1/


Полный отрыв (с моим реализованным кодом):

$('img.delete').click(function() {
    var newID = $(this).attr('id').split('_')[1];

    $.each(myArray, function(i,v) {
        if ( v.id == newID ) {
            v.title = 'new title';
            $('#rangArray').val(jsonStr);
        }
    });
});
0 голосов
/ 17 февраля 2011

Вы должны делать jsonStr[v].title = "new title";

Ваш jsonStr является массивом объектов.

0 голосов
/ 17 февраля 2011

Попробуйте использовать jsonStr[k].title = 'new title';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...