以特定格式创建JSON

时间:2017-10-30 15:59:20

标签: javascript json

我需要以这种格式通过帖子将json发送到api:

const XLSX    = require('xlsx');
const fs = require('fs')

fs.readFile("./sample.xls", (err, data) => {
    if (err) {
        console.log(err)
        return;
    }
    const workbook = XLSX.read(data, {type:'buffer'})  
    console.log("Done file read ...");

})

console.log("end script")

我从输入中获取“answers_questions_attributes”数据,值为true或false,输入的名称是问题ID,例如:

"answer" => {
    "name"=>"Test", 
    "email"=>"test@test.com", 
    "hospital"=>"Hospital Name", 
    "answered_questions_attributes"=>{
        "0"=>{
            "value"=>"1", 
            "question_id"=>"1"
        }, 
        "1"=>{
            "value"=>"0", 
            "question_id"=>"2"
        }, 
        "2"=>{
            "value"=>"1", 
            "question_id"=>"3"
        }
    }
}

我尝试了下面的代码,但这只返回了一个不正确的json:

<div class="resp_val_div">
  <input type="hidden" name="1" value="1" />
  <input type="hidden" name="2" value="0" />
  <input type="hidden" name="3" value="1" />
</div>

在这种情况下如何创建第一个json?

1 个答案:

答案 0 :(得分:3)

如果您想要一个对象,请不要使用数组和.push()。如果您希望parseInt()属性为字符串而不是数字,请不要使用value

    var dados = {
        "name": jQuery("#name").val(),
        "email": jQuery("#email").val(),
        "hospital": jQuery(".answer_hospital").val(),
        'answered_questions_attributes':{}
    };


    resp_val.each(function(index, el) {
        d = {"value":el.value, "question_id":el.name};
        dados.answered_questions_attributes[index] = d;
    });