【问题标题】:Json generated with angular is messing up使用 Angular 生成的 Json 搞砸了
【发布时间】:2015-10-25 06:19:03
【问题描述】:

我想从这样的多数组中生成 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 中获取值,为什么它不起作用?如何从混乱的 plnks 中获得类似于我在上面发布的 json 的结果?

【问题讨论】:

  • 我的回答对你有帮助吗?

标签: javascript json angularjs multidimensional-array


【解决方案1】:

你需要做 JSON.parse。您需要这样做,因为“objects”对象是“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);

};
猜你喜欢
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 2012-04-14
  • 1970-01-01
相关资源
最近更新 更多