[javascript] jquery를 사용하여 각 입력 값으로 동적으로 JSON 만들기

PHP를 통해 JSON 형식에서 일부 데이터를 읽고 싶은 상황이 있지만 JSON 형식을 동적으로 생성하기 위해 Javascript 개체를 구성하는 방법을 이해하는 데 몇 가지 문제가 있습니다.

내 시나리오는 다음과 같습니다.

<input title="QA" type="text" class="email">
<input title="PROD" type="text" class="email">
<input title="DEV" type="text" class="email">

지금까지 내가 가지고있는 Javascript 코드는 각 입력을 통해 데이터를 가져 오지만 여기서부터 처리하는 방법을 이해할 수 없습니다.

var taskArray = {};

$("input[class=email]").each(function() {
  var id = $(this).attr("title");
  var email = $(this).val();

  //how to create JSON?

});

가능한 경우 다음 출력을 얻고 싶습니다.

[{title: QA, email: 'a@a.com'}, {title: PROD, email: 'b@b.com'},{title: DEV, email: 'c@c.com'}]

입력 필드 값으로 이메일을 획득 한 위치입니다.



답변

이렇게 :

function createJSON() {
    jsonObj = [];
    $("input[class=email]").each(function() {

        var id = $(this).attr("title");
        var email = $(this).val();

        item = {}
        item ["title"] = id;
        item ["email"] = email;

        jsonObj.push(item);
    });

    console.log(jsonObj);
}

설명

을 찾고 있습니다 an array of objects. 따라서 빈 배열을 만듭니다. input‘제목’과 ‘이메일’을 키로 사용하여 각각 에 대한 개체를 만듭니다 . 그런 다음 각 개체를 배열에 추가합니다.

문자열이 필요하면 다음을 수행하십시오.

jsonString = JSON.stringify(jsonObj);

샘플 출력

[{"title":"QA","email":"a@b"},{"title":"PROD","email":"b@c"},{"title":"DEV","email":"c@d"}]


답변

JSON 문자열이 출력으로 필요하다고 가정하면 jQuery 만 사용하여 JavaScript 개체를 JSON 문자열로 변환 할 수 없다고 생각합니다.

대상 브라우저에 따라 JSON.stringify함수를 사용하여 JSON 문자열을 생성 할 수 있습니다 .

자세한 내용은 http://www.json.org/js.html 을 참조 하십시오 . JSON 개체를 기본적으로 지원하지 않는 이전 브라우저 용 JSON 파서를 찾을 수도 있습니다.

귀하의 경우 :

var array = [];
$("input[class=email]").each(function() {
    array.push({
        title: $(this).attr("title"),
        email: $(this).val()
    });
});
// then to get the JSON string
var jsonString = JSON.stringify(array);


답변

이것이 도움이 될 수 있습니다. 가능한 한 순수 JS를 선호합니다. JQuery 함수 호출이 많지 않으므로 성능이 크게 향상됩니다.

var obj = [];
var elems = $("input[class=email]");

for (i = 0; i < elems.length; i += 1) {
    var id = this.getAttribute('title');
    var email = this.value;
    tmp = {
        'title': id,
        'email': email
    };

    obj.push(tmp);
}


답변

위의 예와 동일-json (객체 배열이 아님)을 찾고 있다면 그냥 사용하십시오.

function getJsonDetails() {
      item = {}
      item ["token1"] = token1val;
      item ["token2"] = token1val;
      return item;
}
console.log(JSON.stringify(getJsonDetails()))

이 출력은 (유효한 json)으로 인쇄됩니다.

{
   "token1":"samplevalue1",
   "token2":"samplevalue2"
}


답변