2016-08-08 2 views
2

이 형식이 있습니다.javascript json의 다중 배열 및 삭제/읽기

<form id="inform-order"> 
    <input name="example[fname]" /> 
    <input name="example[lname]" /> 
    <input name="example[id]" /> 
</form> 

jquery로 읽은 다음 json으로 변환하고 싶습니다.

<script> 
    var datastring2 = $("form#inform-order").serializeArray(); 
    var datastringjson = JSON.stringify(datastring2); 
</script> 

이 하나 개의 배열입니다 :

나는 이런 짓을.

이제 다중 배열을 병합하고 json으로 변환하고 싶습니다. 처음에는 각 배열에 대해 json에게 컨버팅 한 다음 병합했습니다. 이제

merge_datastringjson = $.extend(datastringjson, new-datastringjson); 

이 내 질문 :

나는 이런 짓을.

1- 내 단계가 사실입니까?

2 - 어떻게 배열 (json 개체) 양식 목록을 example[id]까지 제거 할 수 있습니까?

3 읽는 방법 merge_datastringjson?

참고 : 로컬 저장 장치에 저장하려고하므로 json으로 변환합니다.

답변

1

1 단계가 맞습니까?

merge_datastringjson = JSON.stringify(datastring.concat(new_datastring)); 

2 내가 배열 (JSON 개체를 제거하는 방법 :

당신은 (병합 concat()를 사용할 수 있습니다) 병합 된 개체에 사용, 병합 전에 JSON.stringify 필요하지 않습니다) 양식 목록을 예제 [id]로 작성 하시겠습니까?

당신이 할 수있는 작은 함수를 정의 할 수 있습니다 :

function remove(json, object_name){ 
    var json = JSON.parse(json); 
    var index = -1; 

    $.each(json, function(idx, obj) { 
     if(obj.name===object_name) 
      index = idx; 
    }); 

    if(index!=-1) 
     json.splice(index,1); 

    return JSON.stringify(json); 
} 

3하는 방법 merge_datastringjson를 읽을 수 있습니까?

당신은 $.each()을 사용할 수이 도움이

$.each(JSON.parse(merge_datastringjson), function(idx, obj) { 
    alert(obj.name); 
}); 

희망을.

var datastring = $("form#inform-order").serializeArray(); 
 
var new_datastring = $("form#inform-order2").serializeArray(); 
 

 
merge_datastringjson = JSON.stringify(datastring.concat(new_datastring)); 
 

 
console.log(merge_datastringjson); 
 
console.log(remove(merge_datastringjson, 'example[id]', 12)); 
 

 
function remove(json, object_name, value){ 
 
    var json = JSON.parse(json); 
 
    var index = -1; 
 

 
    $.each(json, function(idx, obj) { 
 
    if(obj.name===object_name && obj.value==value) 
 
     index = idx; 
 
    }); 
 

 
    if(index!=-1) 
 
    json.splice(index,1); 
 

 
    return JSON.stringify(json); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="inform-order"> 
 
    <input name="example[fname]" /> 
 
    <input name="example[lname]" /> 
 
    <input name="example[id]" value="12"/> 
 
</form> 
 

 
<form id="inform-order2"> 
 
    <input name="example2[test]" /> 
 
</form>

+0

주셔서 감사합니다 좋은 도와 준거에 대한 코드를 테스트 해보십시오. 그것은 제거를 제외하고 위대한 작품. 나는 (예를 들어, [id] == 12와 같은) 제거를 원한다는 것을 의미한다 ... – elize

+0

도움이 될 수있어서 다행이다. 당신은 또한 remove 함수에 값을 전달해야한다 ... 나의 업데이트를 확인하라. –

관련 문제