javascript - "JSON.parse(str)"返回 "Unexpected token c"但 str 是一个字符串

标签 javascript html json

我正在尝试以下操作(如下),但是当我想包装 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/

相关文章:

asp.net-mvc - 如何将 XML 作为 POST 传递给 ASP MVC .NET 中的 ActionResult

javascript - 用于二进制 JSON(或类似格式)的可移植 PHP/Javascript 插件?

javascript - 不改变数据和赋值解构的力量

html - 如何设置 anchor 元素的宽度并断开文本?

javascript - Phaser 没有显示任何内容

javascript - 同步多个带有惯性效果的滚动div

稍后创建的元素上的javascript函数

javascript - 制作一个包含 JS 对象的 Grails 域类?

javascript - 尝试将 HashPassword c#(Microsoft 示例)转换为 javascript

javascript - 如果用户在 jsp 中填写一个字段(同时使用 spring mvc 和 hibernate),我如何自动填写其他表单字段