将数组输出包裹在大括号中并添加相关数据标签
Wrap array output in curly brackets and add relevant data label
我正在尝试创建 API 连接并需要将 html 表单数据输出为 JSON 数组。但是我当前的输出与 API 文档不匹配。
我已经设法将表单数据输出为 JSON 友好格式,但试图匹配文档格式给我带来了麻烦。这是文档的 link:https://developer.infusionsoft.com/docs/rest/#!/Contact/createContactUsingPOST
const isEmail = element => element.type === 'email';
const formToJSON = elements => [].reduce.call(elements, (data, element) => {
if (isValidElement(element) && isValidValue(element)) {
if (isEmail(element)) {
data[element.name] = (data[element.name] || []).concat(element.value);
} else {
data[element.name] = element.value;
}
}
return data;
}, {});
const handleFormSubmit = event => {
event.preventDefault();
const data = formToJSON(form.elements);
dataContainer.textContent = JSON.stringify(data, null, " ");
};
const form = document.getElementsByClassName('contact-form')[0];
form.addEventListener('submit', handleFormSubmit);
<form class="contact-form">
<input type="email" placeholder="Email" name="email_addresses" required="required">
<input type="submit" placeholder="submit" value="submit" name="submit">
</form>
电子邮件字段的当前输出
"email_addresses": [
"test@test.com"
],
输出应该是什么样的。
"email_addresses": [
{
"email": "string",
"field": "EMAIL1"
}
],
@Tom 在我试过的评论中发布了一个答案。
data[element.name] = []; var item = {"email": undefined,"field": "EMAIL1"};
item.email = (data[element.name] || []).concat(element.value);
data[element.name].push(item);
结果如下输出
"email_addresses": [
{
"email": [
"test@test.com"
],
"field": "EMAIL1"
}
],
删除 (data[element.name] || []).concat
会导致预期输出:
"email_addresses": [
{
"email": "test@test.com",
"field": "EMAIL1"
}
],
我正在尝试创建 API 连接并需要将 html 表单数据输出为 JSON 数组。但是我当前的输出与 API 文档不匹配。
我已经设法将表单数据输出为 JSON 友好格式,但试图匹配文档格式给我带来了麻烦。这是文档的 link:https://developer.infusionsoft.com/docs/rest/#!/Contact/createContactUsingPOST
const isEmail = element => element.type === 'email';
const formToJSON = elements => [].reduce.call(elements, (data, element) => {
if (isValidElement(element) && isValidValue(element)) {
if (isEmail(element)) {
data[element.name] = (data[element.name] || []).concat(element.value);
} else {
data[element.name] = element.value;
}
}
return data;
}, {});
const handleFormSubmit = event => {
event.preventDefault();
const data = formToJSON(form.elements);
dataContainer.textContent = JSON.stringify(data, null, " ");
};
const form = document.getElementsByClassName('contact-form')[0];
form.addEventListener('submit', handleFormSubmit);
<form class="contact-form">
<input type="email" placeholder="Email" name="email_addresses" required="required">
<input type="submit" placeholder="submit" value="submit" name="submit">
</form>
电子邮件字段的当前输出
"email_addresses": [
"test@test.com"
],
输出应该是什么样的。
"email_addresses": [
{
"email": "string",
"field": "EMAIL1"
}
],
@Tom 在我试过的评论中发布了一个答案。
data[element.name] = []; var item = {"email": undefined,"field": "EMAIL1"};
item.email = (data[element.name] || []).concat(element.value);
data[element.name].push(item);
结果如下输出
"email_addresses": [
{
"email": [
"test@test.com"
],
"field": "EMAIL1"
}
],
删除 (data[element.name] || []).concat
会导致预期输出:
"email_addresses": [
{
"email": "test@test.com",
"field": "EMAIL1"
}
],