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
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及以上,您需要多填充。请稍等。事实上,我现在需要离开半个小时。当我回来时,我会更新代码笔,但是,如果您赶时间,要点如下: