如何更改JSON字符串中的值

时间:2011-02-17 14:17:17

标签: json

我有一个 JSON string 这样的对象数组。

[{"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"}]

一旦id匹配,我想更改它的标题值。因此,如果我的变量myID是5,我想将标题“title 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 个答案:

答案 0 :(得分:1)

试试这个:

$.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);
        }
    });
});

答案 1 :(得分:0)

尝试使用jsonStr[k].title = 'new title';

答案 2 :(得分:0)

你应该做jsonStr[v].title = "new title";

您的jsonStr是一个对象数组。