form to JSON변환 질문입니다.

Copy
<form id ="myform">
    <input type="text" name="main[]" value="0"/>
    <input type="text" name="main[]" value="1"/>
    <input type="text" name="main[]" value="2"/>
    <input type="text" name="main[]" value="3"/>

    <input type="text" name="options[0][]" value="0"/>
    <input type="text" name="options[1][]" value="0"/>
    <input type="text" name="options[2][]" value="0"/>
    <input type="text" name="options[2][]" value="1"/>
    <input type="text" name="options[3][]" value="0"/>
</form>

위와 같은 form 이 있으면 제가 원하는 json 모양은 아래 json모양처럼 나오길 원합니다.

Copy
{

  "main":[0,1,2,3]

  , "options": {

    "0":[0]

    ,"1":[0]

    ,"2":[0,1]

    ,"3":[0]

  }

}

 

구글링으로 찾은 결과

Copy
$.fn.serializeObject = function()
  {
    let o = {};
    let a = this.serializeArray();
    $.each(a, function() {
      if (o[this.name] !== undefined) {
        if (!o[this.name].push) {
          o[this.name] = [o[this.name]];
        }
        o[this.name].push(this.value || '');
      } else {
        o[this.name] = this.value || '';
      }
    });
    return o;
  };

 

let queryStr = $("#myform").serializeObject();

serializeObject 를 사용해서 하면 아래와 같이 key 이름에 [] 배열표시가 들어가고 options가 배열이 아닌 문자열로 되는경우가 생깁니다.

Copy
{

  "main[]":[0,1,2,3]

  , "options[0][]": "0"

  , "options[1][]": "0"

  , "options[2][]": [0,1]

  , "options[3][]": "0"

}

 

제가 원하는 모양으로 나오게 하려면 어떻게 해야할까요?

|

답변 1개 / 댓글 1개

Copy
let queryStr = $("#myform").serialize();

로 안되나요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

post로 던지는데 받는곳에서 post데이터 제한이 걸려있어서 짤라서 보내려고 합니다... ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고