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


1
나는 질문에 대답했다. 당신은 그것을보고 싶을지도 모른다. 많은 사람들이 가비지 수집이 작동하는 방식을 고려하지 않기 때문에 대답을 추가했습니다.
Games Brainiac

@ChrisF-삭제하면 배열에 "정의되지 않은"항목이 생성되므로 중복되지 않음
mplungjan

답변:


189
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
delete 를 사용 하면 배열에 null 요소가
남게

21

JSON에 후행 쉼표를 사용하지 마십시오.

업데이트 : 객체의 배열에서 항목을 제거하려면 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
  1. JSON의 오류 수정 : http://jsonlint.com/
  2. JSON 구문 분석 (자바 스크립트로 질문에 태그를 지정 했으므로 json2.js 사용 )
  3. 생성 한 개체에서 속성을 삭제 합니다.
  4. 객체를 JSON으로 다시 문자열 화합니다.

Drat - 내가 쉼표 :( 제거하는 동안 당신은 대답
mplungjan

6

@mplungjan이 설명했듯이 나는 옳았지만. 그런 다음 바로 up rate 버튼을 클릭합니다. 그러나 그것을 따라 가면서 마침내 오류가 발생했습니다.

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

삭제는 데이터를 제거하는 것이지만 '장소'는 여전히 정의되지 않은 상태로 있습니다.

나는 이것을했고 그것은 매력처럼 작동합니다.

data.result.splice(2,1);  

의미 : 위치 3에서 항목 1 개 삭제


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
Splice가 허용되는 대답이어야합니다. delete는 json 문서를 NULL 삽입으로 바꿉니다 .... 삭제하고 싶었습니다.
Andy

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 참조를
남깁니다

0

이 시도

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

0

배열에서 "firstName"이라는 하나의 속성을 제거하려면 위에서 언급 한 삭제와 함께 맵 기능을 사용할 수 있습니다.

   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.