[英]Wrap array output in curly brackets and add relevant data label
我正在嘗試創建API連接,並且需要將html表單數據輸出為JSON數組。 但是我當前的輸出與API文檔不匹配。
我已經設法將表單數據輸出為JSON友好格式,但是嘗試匹配文檔格式給我帶來了麻煩。 這是文檔的鏈接: 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"
}
],
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.