javascript - 如何修改JSON对象?

标签 javascript jquery html json

这是我的JSFiddle

单击“ +”按钮时,将克隆并动态附加带边框的表单元素。

“保存规则”按钮生成表单字段标签和值的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的专家,但它应该可以按预期工作: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));
  });

关于javascript - 如何修改JSON对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44280218/

相关文章:

javascript - 如何在保持相同布局的同时调整这些 div 的大小?

jquery - "<"符号后的文本被截断

javascript - onclick 后功能没有启动

javascript - 如果我选择索引值大于当前颜色索引的颜色,则只能覆盖通过 mousedown 应用的颜色

当同一页面上的两个菜单实例时,Jquery mmenu 不工作

javascript - JS/jQuery/CSS 类似 Sublime 的下拉建议框

javascript - 如何使用 Handlebars 使 HTML 用 JSON 文件中的内容填充自己?

php - 在Wordpress的CSS中更改所选页面的最有效方法是什么?

html - 零大小的不可见输入有一个空格

javascript - Hook Google 页面结果加载