javascript - 生成自定义 JSON 数组

标签 javascript jquery json

我正在尝试生成如下所示的 JSON 对象,

{"project":{"name":"test name","description":"test description","identifier":"testid",{"custom_fields":[{"value":"2015-12-01","id":4},{"statr":"2015-12-31,"id":5}]},stack":"Java","enabled_module_names":["issue_tracking","time_tracking"],"tracker_ids":["1","2","3"]}}

当前代码生成除下面这部分之外的所有内容,

{"custom_fields":[{"value":"2015-12-01","id":4},{"value":"2015-12-31,"id":5}]}

单词value不变,也应该将输入的值取为日期格式,id也是一个常量

    $(document).ready(function(){
      
       $.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return {"project":o};
};

$(function() {
    $('form').submit(function() {
        $('#result').text(JSON.stringify($('form').serializeObject()));
        return false;
    });
});
   
<div class="row">
    
    <div class="col-lg-12">
        <form role="form">
          
            <div class="form-group">
                <label>Name &nbsp;</label>
                <input class="form-control" placeholder="Name" name="name">
            </div>
            
            <div class="form-group">
                <label>Description</label>
                <textarea class="form-control" rows="6" name="description"></textarea>
            </div>

            <div class="form-group">
                <label>identifier &nbsp;</label>
                <input class="form-control" placeholder="Identifier" name="identifier">
            </div>
          
            <div class="form-group">
                <label>Start Date &nbsp;</label>
                <input type="date">
            </div>
            <div class="form-group">
                <label>End Date &nbsp;&nbsp;</label>
                <input type="date">
            </div>
           
            <div class="form-group">
                <label> Stack &nbsp;</label>
                <select class="form-control" name="stack">
                  <option value="Java">Java</option>
                  <option value="Php">Php</option>
                  <option value="Ruby">Ruby</option>
                  <option value="C#">C#</option>
                  <option value="Python">Python</option>
                  <option value="Pearl">Pearl</option>
                  <option value="JavaScript">JavaScript</option>
                  <option value="Objective-C">Objective-C</option>
                </select>
            </div>

            <div>
            <label>Modules</label>
                <label class="checkbox-inline" name="modules">
                  <input type="checkbox" id="inlineCheckbox1" name="enabled_module_names" value="issue_tracking"> Issue Tracking
                </label>
                <label class="checkbox-inline">
                  <input type="checkbox" id="inlineCheckbox2" name="enabled_module_names" value="time_tracking"> Time Tracking
                </label>
                <label class="checkbox-inline">
                  <input type="checkbox" id="inlineCheckbox3" name="enabled_module_names" value="gantt"> Gant
                </label>
            </div>

            <label>Trackers</label>
                <label class="checkbox-inline" >
                  <input type="checkbox" id="inlineCheckbox1" name="tracker_ids" value="1"> Bug
                </label>
                <label class="checkbox-inline">
                  <input type="checkbox" id="inlineCheckbox2" name="tracker_ids" value="2"> Feature
                </label>
                <label class="checkbox-inline">
                  <input type="checkbox" id="inlineCheckbox3" name="tracker_ids" value="3"> Support
                </label>
            
            <div class="butn" style="margin-left: 15px; margin-top: 10px;top: 10px; position: relative;">
            <button type="submit" id="submit" class="btn btn-default">Submit Button</button>
            <button type="reset" class="btn btn-default">Reset Button</button>
            </div>
        </form>
    </div>
    <pre id="result"></pre>
</div>

在所有其他输入中,此代码捕获输入的名称和输入的值。我正在尝试获取上面提到的 JSON 对象,是否可能。请指教。

最佳答案

可以使用以下函数获取表单中的所有数据。如果您想要递归定义——我建议添加内部形式。

var data = {}; 
$('form').find('input').each(function(){
    var name = $(this).attr('name');
    var value = $(this).val();
    data[name] = value;
});

关于javascript - 生成自定义 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34296357/

相关文章:

javascript - Vue 和 Vuex : Handling dependent computed properties

javascript - IE 无法在某些页面上加载 jQuery 扩展

php - 用于日历的 mySQL 的 while 循环中的 json_encode() 数组

jquery datatable.net 根据单元格的值更改行颜色

javascript - 为什么 jQuery $(document).ready() 在验证失败后没有在 Rails 渲染 View 中触发?

javascript - 尝试通过 jQuery getJSON jsonp 读取远程 URL,但它不起作用

python - 将树中的权重从叶更新到根时出错

javascript - Firebase错误: Timestamp out of range

javascript - 这是恢复模拟功能的 Jest 方式

javascript - 使用 MVC 和 Javascript 验证动态添加的字段并将其保存到数据库