簡體   English   中英

將數組輸出括在大括號中並添加相關數據標簽

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM