objeto - crear json dinamico javascript
Agregar nuevo atributo(elemento) al objeto JSON usando JavaScript (10)
Con ECMAScript 2015 puede usar la sintaxis de propagación (... tres puntos):
let people = {id: 4 ,firstName: ''John''};
people = {...people, secondName:''Forget''};
Te permite añadir sub objetos:
people = {...people, city:{estate: ''Alabama''}};
El resultado sería:
{
"id":4,
"firstName":"Roger",
"secondName":"Walters",
"city":{
"estate":"Alabama"
}
}
También puedes fusionar objetos:
var mergedObj = { ...obj1, ...obj2 };
¿Cómo agrego un nuevo atributo (elemento) al objeto JSON usando JavaScript?
JSON significa JavaScript Object Notation. Un objeto JSON es realmente una cadena que aún no se ha convertido en el objeto que representa.
Para agregar una propiedad a un objeto existente en JS, puede hacer lo siguiente.
object["property"] = value;
o
object.property = value;
Si proporciona información adicional como exactamente lo que necesita hacer en contexto, puede obtener una respuesta más personalizada.
También puede agregar nuevos objetos json a su json, usando la función de extend ,
var newJson = $.extend({}, {my:"json"}, {other:"json"});
// result -> {my: "json", other: "json"}
Una muy buena opción para la función de extensión es la combinación recursiva. Solo agregue el valor verdadero como primer parámetro (lea la documentación para ver más opciones). Ejemplo,
var newJson = $.extend(true, {}, {
my:"json",
nestedJson: {a1:1, a2:2}
}, {
other:"json",
nestedJson: {b1:1, b2:2}
});
// result -> {my: "json", other: "json", nestedJson: {a1:1, a2:2, b1:1, b2:2}}
También puede usar Object.assign
de ECMAScript 2015
. También le permite agregar atributos anidados a la vez. P.ej:
const myObject = {};
Object.assign(myObject, {
firstNewAttribute: {
nestedAttribute: ''woohoo!''
}
});
Ps: Esto no anulará el objeto existente con los atributos asignados. En su lugar serán añadidos. Sin embargo, si asigna un valor a un atributo existente, se anulará.
Un objeto JSON es simplemente un objeto javascript, por lo que Javascript es un lenguaje basado en prototipos, todo lo que tiene que hacer es solucionarlo utilizando la notación de puntos.
mything.NewField = ''foo'';
Usa $.extend()
de jquery , como esto:
token = {_token:window.Laravel.csrfToken};
data = {v1:''asdass'',v2:''sdfsdf''}
dat = $.extend(token,data);
Espero que les sirvas.
gracias por este post Quiero añadir algo que pueda ser útil.
Para IE, es bueno usar
object["property"] = value;
sintaxis porque algunas palabras especiales en IE pueden darte un error.
Un ejemplo:
object.class = ''value'';
esto falla en IE, porque " clase " es una palabra especial. Pasé varias horas con esto.
extend: function(){
if(arguments.length === 0){ return; }
var x = arguments.length === 1 ? this : arguments[0];
var y;
for(var i = 1, len = arguments.length; i < len; i++) {
y = arguments[i];
for(var key in y){
if(!(y[key] instanceof Function)){
x[key] = y[key];
}
}
};
return x;
}
Extiende múltiples objetos json (ignora funciones):
extend({obj: ''hej''}, {obj2: ''helo''}, {obj3: {objinside: ''yes''}});
Resultará en un solo objeto json
for(var i=0;i<JsonObject.length;i++){
alert("inside forloop");
var dataArray = JsonObject[i];
alert(dataArray["data"]);
}
var jsonObj = {
members:
{
host: "hostName",
viewers:
{
user1: "value1",
user2: "value2",
user3: "value3"
}
}
}
var i;
for(i=4; i<=8; i++){
var newUser = "user" + i;
var newValue = "value" + i;
jsonObj.members.viewers[newUser] = newValue ;
}
console.log(jsonObj);