json要素を削除


111

JSON要素またはJSONから行全体を削除したい。

次のJSON文字列があります。

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

1
私はまだいくつかのjsonエラーがあると思います
Santosh Linkha


1
私は質問に答えました、あなたはそれを見てみたいかもしれません。多くの人がガベージコレクションのしくみを考慮に入れていないので、私は答えを追加しました。
Games Brainiac 2013

@ChrisF-削除すると配列に「未定義」の項目が作成されるため、重複しない
mplungjan

回答:


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

スプライスを使用して、配列から要素を削除できます。


5
なぜ最悪の答えが常に一番上にあるのですか?おそらく担当者ポイントでしょうか?私は検索しました。見つけた。正解でした。
Eric Leroy

1
この答えはわかりません。テストデータの「foo」はどこにありますか?
Tony

9
テストデータのfooはどこにありますか?さて、最初の行は実際には疑似コードです。json = {...}の代わりに、json = {foo: 'value'}のようなものになります
aharris88

5
json [key]を削除します。?与えられた例ではいくつの「FirstName」がありますか?間違った答え。
EGurelli

3
削除を使用すると、配列にnull要素が
残り

21

JSONに末尾のコンマを含めないでください

UPDATE:オブジェクトの配列からアイテムを削除する場合は、array.spliceを使用し、削除しないでください。

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

次のようにして、JSONを削除することができます。

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

alert(bleh.first);

delete bleh.first;

alert(bleh.first);

または、インデックスを渡して属性を削除することもできます。

delete bleh[1];

ただし、削除の使用による影響の一部を理解するには、こちらをご覧ください。



6

@mplungjanが述べたように、私はそれが正しかったのですが。次に、すぐにレートを上げるボタンをクリックします。しかし、それに従うことによって、私は最終的にエラーになりました。

<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>

削除はデータを削除するだけですが、「場所」はundefinedとして残ってます。

私はこれを行い、それは魅力のように機能します:

data.result.splice(2,1);  

意味:3番目のアイテムを1つ削除します(配列は0からカウントされるため、3番のアイテムは2番としてカウントされます)


6

spliceJSONオブジェクト配列からオブジェクトを削除する方法をお勧めします。

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.
        }
});

私がこれを使用deleteするのは、メソッドを使用すると、null実行後にオブジェクトが取得されるためです。JSON.stringify(json)


1
スプライスが受け入れられた答えである必要があります。deleteはjsonドキュメントをNULLの挿入に置き換えます。
アンディ

5

この次を試してください

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

すべての答えは素晴らしいです、そしてあなたがそれをあなたがそれを求めることもするでしょう、しかし私はこれを削除する最良の方法、そしてガベージコレクタのための最良の方法(node.jsを実行しているなら)は次のようになると信じています:

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

このようにして、のガベージコレクターは、不要であるnode.jsことを認識しjson['somekey']、それを削除します。


私もこの方法でそれを行うことについて読みましたが、これを機能させることはできません。それでもnull参照が残っています
K20GH '20年


0

配列から「firstName」という1つの属性を削除する場合は、前述のように削除とともにマップ関数を使用できます。

   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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.