Json 如何在非预定义项的对象中再设置一个级别?

Json 如何在非预定义项的对象中再设置一个级别?,json,forms,vue.js,structure,Json,Forms,Vue.js,Structure,主要问题如下: 从服务器获取JSON 形成数据 序列化表单 创建具有正确结构的JSON 将其发送到服务器 我在第四步有困难,我所做的: methods: { onSubmit: function() { var dataForm = new FormData(this.$refs['form']); var data = []; for (var _iterator = dataForm.entries(), _isArray = Ar

主要问题如下:

  • 从服务器获取JSON
  • 形成数据
  • 序列化表单
  • 创建具有正确结构的JSON
  • 将其发送到服务器
  • 我在第四步有困难,我所做的:

    methods: {
        onSubmit: function() {
    
            var dataForm = new FormData(this.$refs['form']);
            var data = [];
    
            for (var _iterator = dataForm.entries(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
                var _Object$assign;
                var _Helper = {};
    
                var _ref;
    
                if (_isArray) {
                    if (_i >= _iterator.length) break;
                    _ref = _iterator[_i++];
                } else {
                    _i = _iterator.next();
                    if (_i.done) break;
                    _ref = _i.value;
                }
    
                var _ref2 = _ref,
                    key = _ref2[0],
                    val = _ref2[1];
    
                Object.assign(_Helper, (_Object$assign = {}, _Object$assign[key] = val, _Object$assign));
    
            }
    
        }
    },
    
    给你-去密码笔。 如您所见,我可以创建如下JSON:

    {"0":"a","1":"b","2":"c","3":"d","4":"e","5":"d"}
    
    {
      "0": {
        "text": "a"
      },
      "1": {
        "text": "b"
      },
      "2": {
        "text": "c"
      },
      "3": {
        "text": "d"
      },
      "4": {
        "text": "e"
      },
      "5": {
        "text": "d"
      }
    }
    
    但是,我需要这样的smth:

    {"0":"a","1":"b","2":"c","3":"d","4":"e","5":"d"}
    
    {
      "0": {
        "text": "a"
      },
      "1": {
        "text": "b"
      },
      "2": {
        "text": "c"
      },
      "3": {
        "text": "d"
      },
      "4": {
        "text": "e"
      },
      "5": {
        "text": "d"
      }
    }
    

    如何实现它并保持JSON的正确结构?

    若要更改格式,请更改它分配属性值的位置:

    Object.assign(data, (_Object$assign = {}, _Object$assign[key] = {text: val}, _Object$assign));
    // -------------------------------------------------------------^^^^^^^^^^^
    
    以所需格式(
    {text:val}
    )指定对象,而不是字符串(
    val

    如果您可以使用现代(ES6)JavaScript,有一个更短的表示法:

    var [key, val] = _ref;
    Object.assign(data, {[key]: {text: val}});
    

    或者(因为您使用的是
    FormData#entries()
    您使用的是现代JS):


    以IE10及以上为目标
    要以IE10及以上为目标,您需要多填充。问题不在于语法,而是缺少将由polyfills添加的函数,如
    .entries()
    。要使用尽可能少的多边形填充,您必须“手动”迭代迭代器(有点像您已经这样)。有关详细信息,请参见。

    要更改格式,请更改其指定属性值的位置:

    Object.assign(data, (_Object$assign = {}, _Object$assign[key] = {text: val}, _Object$assign));
    // -------------------------------------------------------------^^^^^^^^^^^
    
    以所需格式(
    {text:val}
    )指定对象,而不是字符串(
    val

    如果您可以使用现代(ES6)JavaScript,有一个更短的表示法:

    var [key, val] = _ref;
    Object.assign(data, {[key]: {text: val}});
    

    或者(因为您使用的是
    FormData#entries()
    您使用的是现代JS):


    以IE10及以上为目标
    要以IE10及以上为目标,您需要多填充。问题不在于语法,而是缺少将由polyfills添加的函数,如
    .entries()
    。要使用尽可能少的多边形填充,您必须“手动”迭代迭代器(有点像您已经这样)。有关更多信息,请参见。

    您可以更简单地完成整个构造:

    onSubmit: function () {
    
      const dataForm = new FormData(this.$refs['form']);
      const data = {};
    
      for (const i of dataForm.entries()) {
        data[i[0]] = { text: i[1] }
      }
    
      console.log(JSON.stringify(data));
    
    }
    

    您可以更简单地完成整个构造:

    onSubmit: function () {
    
      const dataForm = new FormData(this.$refs['form']);
      const data = {};
    
      for (const i of dataForm.entries()) {
        data[i[0]] = { text: i[1] }
      }
    
      console.log(JSON.stringify(data));
    
    }
    

    谢谢你,但是你的样品没装。感谢您注意到
    .entires()
    ,不,我必须使用大多数可支持的版本。您希望支持哪些浏览器?ECMAScript 5的所有可能性。(IE 10-11,也是最后一个稳定边)要瞄准IE 10及以上,您需要多填充。请稍等。事实上,我现在需要离开半个小时。当我回来的时候,我会更新代码笔,但是,如果你赶时间的话,要点是:谢谢你,但是你的样本没有加载。感谢您注意到
    .entires()
    ,不,我必须使用大多数可支持的版本。您希望支持哪些浏览器?ECMAScript 5的所有可能性。(IE 10-11,也是最后一个稳定边)要瞄准IE 10及以上,您需要多填充。请稍等。事实上,我现在需要离开半个小时。当我回来时,我会更新代码笔,但是,如果您赶时间,要点如下: