我正在尝试以下操作(如下),但是当我想包装 JSON.parse 时,我收到错误 Unexpected Token C。我在线检查了类似问题,它说输入已经是一个对象,因此引发此错误的原因。但是,我尝试了 typeof str,它返回了 String。通过pieceString[0].col 访问它也不起作用 - 因此我的输入不是一个对象,而是一个字符串。出了什么问题?
function generatePieces(nbPieces) {
console.log("** nbPieces: " + nbPieces)
var piecesString = "";
var piecesArray = [];
var colIter = 0;
var rowIter = 0;
for (var i = 0; i <= (nbPieces*nbPieces-1); i++) {
piecesString = piecesString + "{col:" + colIter + ",row:" + rowIter + "},"
colIter = colIter + 1;
if (colIter == (nbPieces)) {
//console.log("colIter = nbPieces")
colIter = 0;
rowIter = rowIter +1;
}
}
piecesString = piecesString.substring(0, piecesString.length - 1);
piecesString = "[" + piecesString + "]"
piecesString = '' + piecesString
console.log(piecesString)
piecesArray = JSON.parse(piecesString);
//console.log(piecesString)
}; // end generate pieces
最佳答案
str
是一个 JS 字符串,但不是 JSON 文本的字符串表示形式。
JSON 中的属性名称必须是字符串,而不是标识符。
{ col: 123 }
是有效的 JavaScript 对象文字,但 JSON 无效。
{ "col": 123 }
两者都可以。
不要尝试通过将字符串混合在一起来构建 JSON。麻烦多了就值得了。使用您当时使用的任何编程语言(在本例中为 JavaScript)构建数据结构,然后将其通过 JSON 序列化器传递。
var pieces = [];
for (var i = 0; i <= (nbPieces*nbPieces-1); i++) {
var piece = { col: colIter, row: rowIter };
pieces.push(piece);
}
var json_text = JSON.stringify(pieces);
关于javascript - "JSON.parse(str)"返回 "Unexpected token c"但 str 是一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28968987/