2011-03-07 18 views
5

Quería agregar elementos de actualización de eliminación en json usando jquery/javascript y cuando el archivo se envía al servidor quería considerar el último objeto json.cómo manipular objetos json en javascripts/jquery?

¿Puede sugerir y abordar estoy atascado.

+2

'var = $ json .parseJSON ('...'); json.oldVar = 'newvalue'; '? –

Respuesta

4

Como se mencionó, puede usar las funciones json de jQuery para editar el objeto. Permítanme demostrar cómo se puede hacer esto, con un poco de código:

tomemos este objeto JSON:

{ 
"people":[ 
    {"name":"Bob","score":9}, 
    {"name":"Joe","score":6}, 
    {"name":"Tom","score":7} 
    ], 
"projects":[ 
    {"id":2347,"entries":5}, 
    {"id":8563,"entries":3} 
    ], 
"lastUser":"Bob" 
} 

Ahora, digamos que su servidor está almacenando que como un archivo JSON plana en alguna parte ... lo lo que haríamos es cargarlo en el cliente con los métodos ajax de jQuery, y editarlo usando una devolución de llamada. Después de manipular el objeto, vamos (con fines de demostración) Enviar inmediatamente de nuevo a un script del lado del servidor, que presumiblemente sobrescribir el archivo plano actual:

$.getJSON(/*path to JSON file here*/,function(response){ 
    response.lastUser="Tom"; //This is where the sample manipulation occurs. 
    $.post(/* path to server-side script*/,response,function(){ 
     alert("Object Saved"); 
    }); 
}); 

esperanza de que ayuda a comprender el patrón de los involucrados!

+0

¡Yo quería una forma de manipular ...! Sé cómo enviarlo al servidor ... :) – Amit

+1

La manipulación se muestra en la línea 'response.lastUser =" Tom "; '. Modifique el objeto JSON directamente y luego devuélvalo :) – johnhunter

+0

Escribí un comentario sobre esa línea para aclarar dónde ocurre la manipulación ... lo siento por cualquier confusión. – Trafalmadorian

0

Los datos JSON se pueden manipular directamente en javascript después del análisis. (Vea el comentario de Brad sobre su pregunta). Para devolver los datos actualizados al servidor, puede usar $ .post. Ahora, ¿esto no resuelve tu problema? De lo contrario, explique su problema con más detalle.

9

Uso JSON.parse y JSON.stringify para manipular.

json_flat = '{"page":"1","total":"2","ids":[{"id":"3085"},{"id":"3086"}]}'; // your flat json  
json_object = JSON.parse(json_flat); //convert to an object 

//Manipulation 
json_object.page = "6"; //change values 
delete json_object.total; //delete a value 

json_flat = JSON.stringify(json_object); //convert back to flat 

EDIT: Se ha corregido algunos errores tipográficos: JSFiddle

+0

Este ejemplo está actualmente mal, ya que 'json_flat' ya es un objeto simple, no una cadena. –

+0

Lo sentimos, corrigió mis errores tipográficos – Soth

Cuestiones relacionadas