2017-05-31 13 views
0

こちらは私ですJSFiddleJSONオブジェクトを変更するにはどうすればよいですか?

ボーナスフォームの要素がクローンされ、動的に追加されます。

[ルールを保存]ボタンは、フォームフィールドのラベルと値のJSONオブジェクトを生成します。 これは、[ルールを保存]ボタンをクリックすると作成されるJSONオブジェクトです。

{ 
     "nameRules": "", 
     "typeRules": "Type1", 
     "descriptionRules": "XYZ\n     ", 
     "elhs": "", 
     "op": "<=", 
     "erhs": "", 
     "datatype": "", 
     "joinop0": "", 
     "elhs0": "", 
     "op0": "", 
     "erhs0": "", 
     "datatype0": "" 
    } 

次の形式でJSONオブジェクトを作成するにはどうすればよいですか?

{ 
    "nameRules": "", 
    "typeRules": "Type1", 
    "descriptionRules": "XYZ\n     ", 
    "expressions": [{ 
       "elhs": "", 
       "op": "<=", 
       "erhs": "", 
       "datatype": "" 
        }, 
       { 
       "joinop0": "", 
       "elhs0": "", 
       "op0": "", 
       "erhs0": "", 
       "datatype0": "" 
       }] 
} 

ご協力いただければ幸いです。 はうーん、私はjqueryのでは専門家ではないようなコードはかなりではないかもしれませんが、期待通りに動作するはずですあなた

+0

@NayasSubramanianが言ったように、あなたがJson.Parse –

+0

を使用することができ、 'JSON.parse(myJSON)'を使い、通常のjavascriptを使ってオブジェクトを編集し、一旦終了したら 'JSON.stringify(myEditedObject) 'を使ってオブジェクトをJSONに変換してください – evolutionxbox

+0

@evolutionxbox私に理解を助ける? –

答えて

1

ありがとう:FIDDLE

$('button.btn:contains("Save Rules")').on('click', function(e) { 
    console.log('hhh', $('form.form-horizontal#rules').find(':input:not(button):not(#joinop)').get()); 
    var jsonData = $('form.form-horizontal#rules') 
     .find(':input:not(button):not(#joinop)').get() 
     .reduce(function(acc, ele) { 
     acc.expressions = acc.expressions||[]; 
     if (ele.closest("#container") || ele.closest('.parent-border')) { 
      if (ele.closest('.parent-border')) var i = 0; 
      else var i = $("#container .child-border").index(ele.closest(".child-border")) +1 
      acc.expressions[i] = acc.expressions[i]||{}; 
      acc.expressions[i][ele.name || ele.id] = ele.value; 
     } 
     else acc[ele.name || ele.id] = ele.value; 
     return acc; 
     }, {}); 
    console.log(jsonData); 
    alert(JSON.stringify(jsonData, null, 4)); 
    }); 
+0

うわー!これは魔法のように機能します。どのように式の配列をnameRules、typeRules、descriptionRulesの後に表示させることができますか? –

+0

式の値を変数に入れて、他の操作の後にオブジェクトに追加してください:[EDITED FIDDLE](http://jsfiddle.net/kd5fjgnd/) –

+0

あなたは私の一日を作ったのです。本当にありがとう! :D –

関連する問題