Jawaban:
JSON adalah singkatan dari JavaScript Object Notation. Objek JSON sebenarnya adalah string yang belum diubah menjadi objek yang diwakilinya.
Untuk menambahkan properti ke objek yang ada di JS Anda bisa melakukan hal berikut.
object["property"] = value;
atau
object.property = value;
Jika Anda memberikan beberapa info tambahan seperti apa yang harus Anda lakukan dalam konteks, Anda mungkin mendapatkan jawaban yang lebih sesuai.
object["property"] = value;
JSON.stringify
.
console.log
bukan untuk serialisasi. Gunakan console.log(JSON. stringify(object))
.
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);
terima kasih untuk posting ini. Saya ingin menambahkan sesuatu yang bisa bermanfaat.
Untuk IE, itu baik untuk digunakan
object["property"] = value;
sintaksis karena beberapa kata khusus di IE dapat memberi Anda kesalahan.
Sebuah contoh:
object.class = 'value';
ini gagal di IE, karena " kelas " adalah kata khusus. Saya menghabiskan beberapa jam dengan ini.
Dengan ECMAScript sejak 2015 Anda dapat menggunakan Spread Syntax (... tiga titik):
let people = { id: 4 ,firstName: 'John'};
people = { ...people, secondName: 'Fogerty'};
Anda dapat menambahkan sub objek:
people = { ...people, city: { state: 'California' }};
hasilnya adalah:
{
"id": 4,
"firstName": "John",
"secondName": "Forget",
"city": {
"state": "California"
}
}
Anda juga dapat menggabungkan objek:
var mergedObj = { ...obj1, ...obj2 };
Anda juga dapat menggunakan Object.assign
dari ECMAScript 2015
. Ini juga memungkinkan Anda untuk menambahkan atribut bersarang sekaligus. Misalnya:
const myObject = {};
Object.assign(myObject, {
firstNewAttribute: {
nestedAttribute: 'woohoo!'
}
});
Ps: Ini tidak akan menimpa objek yang ada dengan atribut yang ditugaskan. Sebaliknya mereka akan ditambahkan. Namun jika Anda menetapkan nilai ke atribut yang ada maka itu akan diganti.
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;
}
Memperluas beberapa objek json (mengabaikan fungsi):
extend({obj: 'hej'}, {obj2: 'helo'}, {obj3: {objinside: 'yes'}});
Akan menghasilkan objek json tunggal
Anda juga dapat menambahkan objek json baru ke json Anda, menggunakan fungsi extended ,
var newJson = $.extend({}, {my:"json"}, {other:"json"});
// result -> {my: "json", other: "json"}
Opsi yang sangat bagus untuk fungsi extended adalah penggabungan rekursif. Tambahkan saja nilai sebenarnya sebagai parameter pertama (baca dokumentasi untuk opsi lainnya). Contoh,
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}}
Anda juga dapat secara dinamis menambahkan atribut dengan variabel secara langsung dalam objek literal.
const amountAttribute = 'amount';
const foo = {
[amountAttribute]: 1
};
foo[amountAttribute + "__more"] = 2;
Hasil dalam:
{
amount: 1,
amount__more: 2
}
Penggunaan $.extend()
dari jquery , seperti ini:
token = {_token:window.Laravel.csrfToken};
data = {v1:'asdass',v2:'sdfsdf'}
dat = $.extend(token,data);
Saya harap Anda melayani mereka.
a
adalah JSON,a.s
seperti yang baru saja Anda tentukan adalah string. Sekarang Anda mencoba menambahkan["subproperty"]
ke string. Apakah Anda mengerti sekarang mengapa Anda mendapat kesalahan?