99

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'}]

入力フィールドの値によってメールが取得される場所。

4

4 に答える 4

294

このような:

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'title' と 'email' をキーとして、それぞれのオブジェクトを作成します。次に、各オブジェクトを配列に追加します。

文字列が必要な場合は、

jsonString = JSON.stringify(jsonObj);

サンプル出力

[{"title":"QA","email":"a@b"},{"title":"PROD","email":"b@c"},{"title":"DEV","email":"c@d"}] 
于 2013-02-21T18:23:27.240 に答える
17

出力として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);
于 2013-02-21T18:28:04.563 に答える
10

これが役立つかもしれません。可能な限り純粋な 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);
}
于 2013-02-21T18:20:20.467 に答える
1

上記の例と同じ - json (オブジェクトの配列ではない) を探しているだけの場合は、

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

この出力は(有効なjson)として出力されます

{ 
   "token1":"samplevalue1",
   "token2":"samplevalue2"
}
于 2019-12-28T19:33:25.090 に答える