Hapus elemen json


111

Saya ingin menghapus elemen JSON atau satu baris penuh dari JSON.

Saya memiliki string JSON berikut:

{
   "result":[
       {
           "FirstName": "Test1",
           "LastName":  "User",
       },
       {
           "FirstName": "user",
           "LastName":  "user",
       },
       {
           "FirstName": "Ropbert",
           "LastName":  "Jones",
       },
       {
           "FirstName": "hitesh",
           "LastName":  "prajapti",
       }
   ]
}

1
saya pikir Anda masih mendapat beberapa kesalahan json
Santosh Linkha

3
kemungkinan duplikat Hapus atribut JSON
ChrisF

1
Saya menjawab pertanyaan itu, Anda mungkin ingin melihatnya. Saya menambahkan jawabannya karena banyak orang yang tidak memperhatikan cara kerja pengumpulan sampah.
Game Brainiac

@ChrisF - bukan duplikat karena menghapus akan membuat item "tidak ditentukan" dalam array
mplungjan

Jawaban:


189
var json = { ... };
var key = "foo";
delete json[key]; // Removes json.foo from the dictionary.

Anda dapat menggunakan sambungan untuk menghapus elemen dari larik.


5
Mengapa selalu jawaban terburuk di atas? Mungkinkah itu poin rep? Aku mencari. Saya menemukan. Anda memiliki jawaban yang benar.
Eric Leroy

1
Saya tidak mengerti jawaban ini. Di mana "foo" dalam data pengujian?
Tony

9
Dimana foo dalam data pengujian? Nah, baris pertama sebenarnya adalah pseudocode. Alih-alih json = {...}, itu akan menjadi sesuatu seperti json = {foo: 'value'}
aharris88

5
hapus json [key]; ? Berapa banyak "FirstName" dalam contoh yang diberikan? Jawaban yang salah.
EGurelli

3
menggunakan delete akan meninggalkan elemen null dalam array
MikeL

21

JANGAN memiliki tanda koma di JSON Anda

UPDATE : Anda perlu menggunakan array.splice dan tidak menghapus jika Anda ingin menghapus item dari array di objek

var data = {
  "result": [{
    "FirstName": "Test1",
    "LastName": "User"
  }, {
    "FirstName": "user",
    "LastName": "user"
  }]
}
console.log(data.result);
console.log("------------ deleting -------------");
delete data.result[1];
console.log(data.result); // note the "undefined" in the array.


data = {
  "result": [{
    "FirstName": "Test1",
    "LastName": "User"
  }, {
    "FirstName": "user",
    "LastName": "user"
  }]
}

console.log(data.result);
console.log("------------ slicing -------------");
var deletedItem = data.result.splice(1,1);
console.log(data.result); // here no problem with undefined.


15

Anda dapat mencoba menghapus JSON sebagai berikut:

var bleh = {first: '1', second: '2', third:'3'}

alert(bleh.first);

delete bleh.first;

alert(bleh.first);

Alternatifnya, Anda juga dapat meneruskan indeks untuk menghapus atribut:

delete bleh[1];

Namun, untuk memahami beberapa akibat dari penggunaan penghapusan, lihat di sini


7

Saya merekomendasikan splicemetode untuk menghapus objek dari array objek JSON.

jQuery(json).each(function (index){
        if(json[index].FirstName == "Test1"){
            json.splice(index,1); // This will remove the object that first name equals to Test1
            return false; // This will stop the execution of jQuery each loop.
        }
});

Saya menggunakan ini karena ketika saya menggunakan deletemetode, saya mendapatkan nullobjek setelah saya melakukannyaJSON.stringify(json)


1
Sambungan harus menjadi jawaban yang diterima, hapus menggantikan dokumen json dengan penyisipan NULL .... Saya ingin menghapus untuk menghapusnya - sambatan akan.
Andy

6
  1. Perbaiki kesalahan di JSON: http://jsonlint.com/
  2. Parse JSON (karena Anda telah menandai pertanyaan dengan JavaScript, gunakan json2.js )
  3. Hapus properti dari objek yang Anda buat
  4. Merangkai objek kembali ke JSON.

Drat - Anda menjawab ketika saya menghapus koma :(
mplungjan

6

Seperti yang dijelaskan oleh @mplungjan, saya pikir itu benar. Lalu langsung saya klik tombol up rate. Tapi dengan mengikutinya, akhirnya saya mendapat error.

<script>
var data = {"result":[
  {"FirstName":"Test1","LastName":"User","Email":"test@test.com","City":"ahmedabad","State":"sk","Country":"canada","Status":"False","iUserID":"23"},
  {"FirstName":"user","LastName":"user","Email":"u@u.com","City":"ahmedabad","State":"Gujarat","Country":"India","Status":"True","iUserID":"41"},
  {"FirstName":"Ropbert","LastName":"Jones","Email":"Robert@gmail.com","City":"NewYork","State":"gfg","Country":"fgdfgdfg","Status":"True","iUserID":"48"},
  {"FirstName":"hitesh","LastName":"prajapti","Email":"h.prajapati@zzz.com","City":"","State":"","Country":"","Status":"True","iUserID":"78"}
  ]
}
alert(data.result)
delete data.result[3]
alert(data.result)
</script>

Hapus hanya menghapus data, tetapi 'tempat' masih ada karena belum ditentukan .

Saya melakukan ini dan itu bekerja seperti pesona:

data.result.splice(2,1);  

artinya: hapus 1 item pada posisi 3 (karena array dihitung dari bentuk 0, maka item di no 3 dihitung sebagai no 2)


5

Coba yang berikut ini

var myJSONObject ={"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
console.log(myJSONObject);
console.log(myJSONObject.ircEvent);
delete myJSONObject.ircEvent 
delete myJSONObject.regex 
console.log(myJSONObject);

5

Semua jawaban bagus, dan itu akan melakukan apa yang Anda tanyakan juga, tapi saya yakin cara terbaik untuk menghapus ini, dan cara terbaik untuk pengumpul sampah (jika Anda menjalankan node.js) adalah seperti ini:

var json = { <your_imported_json_here> };
var key = "somekey";
json[key] = null;
delete json[key];

Dengan cara ini pengumpul sampah untuk node.jsakan mengetahui bahwa hal json['somekey']itu tidak lagi diperlukan, dan akan menghapusnya.


Saya telah membaca tentang melakukannya dengan cara ini juga, tetapi saya tidak dapat melakukannya. Ini masih menyisakan referensi nol
K20GH

0

coba ini

json = $.grep(newcurrPayment.paymentTypeInsert, function (el, idx) { return el.FirstName == "Test1" }, true)

0

jika kita ingin menghapus satu atribut, katakanlah "firstName" dari array kita bisa menggunakan fungsi map bersama dengan delete seperti yang disebutkan di atas

   var result= [
       {
           "FirstName": "Test1",
           "LastName":  "User",
       },
       {
           "FirstName": "user",
           "LastName":  "user",
       },
       {
           "FirstName": "Ropbert",
           "LastName":  "Jones",
       },
       {
           "FirstName": "hitesh",
           "LastName":  "prajapti",
       }
   ]

result.map( el=>{
    delete el["FirstName"]
})
console.log("OUT",result)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.