Actualización de un objeto JSON mediante Javascript

¿Cómo puedo actualizar el siguiente objeto JSON dinámicamente usando javascript o Jquery?

var jsonObj = [{'Id':'1','Username':'Ray','FatherName':'Thompson'},  
               {'Id':'2','Username':'Steve','FatherName':'Johnson'},
               {'Id':'3','Username':'Albert','FatherName':'Einstein'}]

Me gustaría actualizar dinámicamente el nombre de usuario a 'Thomas' donde el 'Id' es '3'.

¿Cómo puedo conseguirlo?

Solución

Una solución JavaScript simple, asumiendo que jsonObj ya contiene JSON:

Recorrerlo en bucle buscando el Id que coincida, establecer el nombre de usuario correspondiente, y romper el bucle después de que el elemento coincidente haya sido modificado:

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

[Aquí está en jsFiddle][1]

Aquí'está lo mismo envuelto en una función:

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");
Comentarios (2)

simplemente iterar sobre la lista y luego comprobar las propiedades de cada objeto.

for (var i = 0; i < jsonObj.length; ++i) {
    if (jsonObj[i]['Id'] === '3') {
        jsonObj[i]['Username'] = 'Thomas';
    }
}
Comentarios (0)

uso:

var parsedobj = jQuery.parseJSON( jsonObj);

Esto sólo será útil si usted don't necesidad de que el formato de permanecer en cadena. De lo contrario, tendrá que convertirlo de nuevo a JSON utilizando la biblioteca JSON.

Comentarios (0)