使用Javascript更新JSON对象

Abi*_*hek 38 javascript jquery json

如何使用javascript或Jquery动态更新以下JSON对象?

var jsonObj = [{'Id':'1','Username':'Ray','FatherName':'Thompson'},  
               {'Id':'2','Username':'Steve','FatherName':'Johnson'},
               {'Id':'3','Username':'Albert','FatherName':'Einstein'}]
Run Code Online (Sandbox Code Playgroud)

我想动态地将用户名更新为'Thomas',其中'Id'为'3'.

我该如何实现这一目标?

Mic*_*ski 62

一个简单的JavaScript解决方案,假设jsonObj已经包含JSON:

循环查找匹配的Id,设置相应的用户名,并break在匹配的项目被修改后从循环中循环:

for (var i = 0; i < jsonObj.length; i++) {
  if (jsonObj[i].Id === 3) {
    jsonObj[i].Username = "Thomas";
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)

这是jsFiddle.

这是包含在函数中的相同内容:

function setUsername(id, newUsername) {
  for (var i = 0; i < jsonObj.length; i++) {
    if (jsonObj[i].Id === id) {
      jsonObj[i].Username = newUsername;
      return;
    }
  }
}

// Call as
setUsername(3, "Thomas");
Run Code Online (Sandbox Code Playgroud)

  • 以上解决方案适用于小提琴手.我在问题中使用了json字符串,为了使它在ASP.NET MVC 5 Razor视图中工作,我不得不使用obj = JSON.parse(jsonObj)将字符串解析为json; 在操纵之前.希望它可以帮助某人.顺便提一下,因为解决方案有效. (2认同)

qia*_*iao 6

只需遍历列表然后检查每个对象的属性.

for (var i = 0; i < jsonObj.length; ++i) {
    if (jsonObj[i]['Id'] === '3') {
        jsonObj[i]['Username'] = 'Thomas';
    }
}
Run Code Online (Sandbox Code Playgroud)


Vig*_*ran 5

$(document).ready(function(){        
    var jsonObj = [{'Id':'1','Username':'Ray','FatherName':'Thompson'},  
               {'Id':'2','Username':'Steve','FatherName':'Johnson'},
               {'Id':'3','Username':'Albert','FatherName':'Einstein'}];

    $.each(jsonObj,function(i,v){       
      if (v.Id == 3) {
        v.Username = "Thomas";
        return false;
      }
    });

alert("New Username: " + jsonObj[2].Username);

});
Run Code Online (Sandbox Code Playgroud)