用角度生成的Json正在搞乱

时间:2015-10-25 06:19:04

标签: javascript json angularjs multidimensional-array

我想从像这样的多数组生成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那样的结果?

1 个答案:

答案 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);

};