Me preguntaba cómo puedo crear un objeto JSON (JS) y luego clonarlo.¿Cómo crear y clonar un objeto JSON?
Respuesta
Cómo crear un objeto JSON en javascript/jquery?
No hay nada como un objeto JSON . JSON significa JavaScript Object Notation y es básicamente una cadena que codifica información similar a los literales de objetos de JavaScript.
Sin embargo, puede crear una codificación de este tipo (que daría lugar a una cadena ) con JSON.stringify(object)
, ver JSON in JavaScript. También podría crear una cadena de este tipo manualmente, pero es muy propenso a errores y no lo recomiendo.
¿Cómo puedo clonar un objeto JSON en javascript/jquery?
ya que es sólo una cadena:
var jsonString2 = jsonString;
¡No puedo trabajar más con matrices de JavaScript
JSON es un formato de intercambio de datos, no es una estructura de datos que puede usar en una aplicación.
Tal vez usted quiere leer más sobre JSON, objects en JS y arrays en JS.
La segunda respuesta NO es verdadera. El operador "=" no clonará ningún objeto sino que pasará la referencia. – Reinhard
@ Reinhard: nunca dije que sí. ** JSON ** en JS solo existe como ** cadena **. Y como las cadenas son inmutables, clonar una cadena es tan simple como asignarla a una variable diferente. Aunque estoy de acuerdo en retrospectiva, el OP puede haber estado hablando de objetos de JavaScript. –
@FelixKling: Entonces es una respuesta a una pregunta inválida. Sigue que no es una respuesta. Creo que sería mejor eliminar esa línea para no confundir drive-by-readers y difundir la mala sabiduría. –
Este es un problema que he encontrado a menudo al analizar JSON y reutilizarlo varias veces en el código. Y desea evitar volver a analizar cada vez desde la cadena JSON original, o pasar por el modo serialize/parse
que es la manera menos eficiente.
Por lo tanto, en estos casos en los que desee ajustar el objeto analizado sin modificar el original, utilice la siguiente función en el servidor (NodeJs) o en el código javascript del cliente. El clone
función jQuery es menos eficiente debido a que tratan los casos para las funciones, expresión regular, etc. La función más adelante, sólo trata los JSON apoyado tipos (null, sin definir, número, cadena, de objeto y matriz):
function cloneJSON(obj) {
// basic type deep copy
if (obj === null || obj === undefined || typeof obj !== 'object') {
return obj
}
// array deep copy
if (obj instanceof Array) {
var cloneA = [];
for (var i = 0; i < obj.length; ++i) {
cloneA[i] = cloneJSON(obj[i]);
}
return cloneA;
}
// object deep copy
var cloneO = {};
for (var i in obj) {
cloneO[i] = cloneJSON(obj[i]);
}
return cloneO;
}
esto es lo que hago y funciona como un encanto
if (typeof JSON.clone !== "function") {
JSON.clone = function(obj) {
return JSON.parse(JSON.stringify(obj));
};
}
¿Esto también funciona para
Q1: Cómo crear un objeto JSON en JavaScript/jQuery?
Creación de un objeto JavaScript es tan simple:
var user = {}; // creates an empty user object
var user = {firstName:"John", lastName:"Doe"}; // creates a user by initializing
// its firstName and lastName properties.
Después de la creación puede añadir campos adicionales a su objeto como user.age = 30;
.
Si tiene el objeto como una cadena JSON, puede convertirlo en un objeto JSON utilizando la función incorporada JSON.parse(yourJsonString)
o la función $.parseJSON(yourJsonString)
de jQuery.
Q2: ¿Cómo puedo clonar un objeto JSON en javascript/jquery?
Mi forma de clonar objetos JSON es extend función de jQuery. Por ejemplo, se puede generar un clon de su objeto de usuario, como a continuación:
var cloneUser = $.extend(true, {}, {firstName:"John", lastName:"Doe"});
El primer parámetro designa si el objeto clon será una copia superficial o profunda del original (ver Object copy en la wiki).
Para ver otras alternativas de clonación JSON, puede leer el artículo this.
'JSON.parse' devuelve un' Objeto' (Ver: [MDN] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Return_value)), no una "Objeto JSON", que AFAIK no existe. (No es un juego de ingenio, pero este es un punto de confusión para muchos principiantes, así que podría ser bueno corregirlo) – StubbornShowaGuy
Eso sí,
var x = {} //some json object here
var y = JSON.parse(JSON.stringify(x)); //new json object here
A partir de ES6. Object.assign es una buena manera de hacer esto.
newjsonobj = Object.assign({}, jsonobj, {})
Los elementos del primer argumento mutan el objeto existente, y el tercer argumento son los cambios en el nuevo objeto devuelto.
En ES7 se propone usar el operador de extensión.
newjsonobj = {...jsonobj}
Esto crea un clon superficial: Cualquier modificación de los valores en el primer objeto JSON afectará al clon (y viceversa), si esos valores son algo mutable como objetos o matrices. p.ej. 'var a = {arr: [1,2,3]}; var b = Object.assign ({}, a, {}); b.arr [0] = 4; console.log (a.arr); 'imprime' [4, 2, 3] 'en lugar de' [1, 2, 3] 'como se esperaba. – thenickdude
- 1. AS3 - Clonar un objeto
- 2. ¿Cómo "clonar" un objeto en un objeto de subclase?
- 3. ¿Cómo puedo clonar un objeto de diccionario?
- 4. Cómo puedo clonar un objeto JAXB
- 5. ¿Cómo se puede clonar un objeto WPF?
- 6. Crear un objeto Json en javascript
- 7. ¿Cómo clonar un objeto generador de Python?
- 8. Crear dinámicamente un objeto JSON anidado
- 9. cómo clonar un objeto en Android?
- 10. Cómo clonar un objeto Date en JavaScript
- 11. Cómo clonar un objeto en Flex?
- 12. ¿Qué significa clonar() un objeto?
- 13. Cómo crear objeto JSON usando jQuery
- 14. Cómo clonar el objeto js?
- 15. Cómo crear un objeto JSON simple usando C# string Builder
- 16. ¿Usando Parcel para clonar un objeto?
- 17. entero Objeto Clonar Gráfico
- 18. Crear objeto JSON de la manera correcta
- 19. Exactamente clonar un objeto en javascript
- 20. ¿Cómo puedo analizar un esquema JSON y crear un objeto json predeterminado o generar una clase java?
- 21. Crear ko.observableArray del objeto JSON en knockout
- 22. Función recursiva para crear un objeto JSON jerárquico?
- 23. Cómo clonar un objeto Java con el método clone()
- 24. Cómo clonar (y restaurar) un subárbol DOM
- 25. Uso de JSON para crear un objeto en Groovy/Grails
- 26. ¿Cómo agregar valores a un objeto JSON?
- 27. ¿Cómo puedo clonar un objeto DateTime en C#?
- 28. Cómo clonar un iterador?
- 29. Cómo clonar un InputStream?
- 30. ¿Cómo crear un objeto DateTime?
¿Por qué * "can't [you] work longer with javascript array" *? JSON es solo la matriz y la sintaxis literal del objeto de Javascript. Si le gusta la sintaxis de JSON, debería sentirse como en casa cuando utilice arreglos y objetos en Javascipt. –
Tómese su tiempo y lea este artículo: [No existe el "objeto JSON"] (http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) – PetersenDidIt