我想从像这样的多数组生成json
var qus ={
{
"qus" :"what is your name?",
"option1" : {"ans" : Alex, "cor:"false"},
"option2" : {"ans" : Hervy, "cor:"false"},
"option3" : {"ans" : Rico, "cor:"true"},
"option4" : {"ans" : Tom, "cor:"false"},
},
{
"qus" :"what is your brother's name?",
"option1" : {"ans" : Alex, "cor:"false"},
"option2" : {"ans" : Hervy, "cor:"true"},
"option3" : {"ans" : Rico, "cor:"false"},
"option4" : {"ans" : Tom, "cor:"false"},
},
}
但如果我通过文本区域获取数组值,则不会生成它。 (查看) http://plnkr.co/edit/hvuLXL1SPntlqtAV8iEW?p=preview 它添加了所有br标签。
在这里,它正在打破一切。 (查看) http://plnkr.co/edit/5qzsSSzv6oXV4QRpPa36?p=preview
你介意解释一下吗?如果我从textarea获取价值,为什么它不起作用?我怎样才能得到像我上面发布的json那样的结果?
答案 0 :(得分:0)
你需要做JSON.parse。你需要这样做,因为"对象" object是" string"类型的对象。因此,当您执行 for-in 时,您将遍历每个字符,而不会提供您想要的结果。您必须解析JSON字符串并从中获取数组。其余的逻辑似乎很好。
尝试使用此作为scope.generate函数。
http://plnkr.co/edit/YW3jFTrTgdH4FfitfeMJ?p=preview
$scope.generate = function() {
var objects = document.getElementById("inpt").value;
var el = document.getElementById("out");
var newObj = JSON.parse(objects);
el.innerHTML += 'var qus ={ <br>';
for (i in newObj) {
var qset = newObj[i];
el.innerHTML += '{ <br>';
el.innerHTML += '"qus" :"' + qset[0] + '",<br>';
for (n in qset) {
if (n == 0) continue;
var nameset = qset[n];
el.innerHTML += '"option' + n;
el.innerHTML += '" : {"ans" : ' + nameset[0];
el.innerHTML += ', "cor:"' + nameset[1] + '"},<br>';
}
el.innerHTML += '},<br><br>';
}
el.innerHTML += '}';
//el.innerHTML = JSON.stringify(objects);
console.log(objects);
};