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 - 向左浮动菜单,我哪里错了?

jQuery load() 函数表现异常

javascript - 暂停和恢复ajax重复请求

java - 在浏览器上定期显示消息

html - 有没有办法给 HTML 输入某种命名空间来避免冲突?

javascript - Leaflet清除geojson层(折线)

javascript - 加载动态内容后 jQuery 函数不起作用

javascript - 只有 MM//DD/YYYY 的 MM 部分被分配给变量

javascript - jQuery - 如何从文本区域/输入中获取选定的文本?

javascript - 获取 Google 可视化饼图中的点击标签 [corechart]