Javascript &引用;JSON.parse(str)";“返回”;意外标记c“;但是str是一个字符串

Javascript &引用;JSON.parse(str)";“返回”;意外标记c“;但是str是一个字符串,javascript,html,json,Javascript,Html,Json,我正在尝试下面的方法(如下),但是当我想包装JSON.parse时,我得到了一个意外的错误标记C。我在线检查了类似的问题,它说输入已经是一个对象,因此引发此错误的原因。然而,我尝试了typeof str,它返回了字符串。也可以通过PiecessString[0]访问它。col不起作用-因此我的输入不是对象,而是字符串。出了什么问题 function generatePieces(nbPieces) { console.log("** nbPieces: "

我正在尝试下面的方法(如下),但是当我想包装JSON.parse时,我得到了一个意外的错误标记C。我在线检查了类似的问题,它说输入已经是一个对象,因此引发此错误的原因。然而,我尝试了typeof str,它返回了字符串。也可以通过PiecessString[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
函数生成器(nbPieces){
控制台日志(“**nbPieces:+nbPieces)
var piecesString=“”;
var piecesArray=[];
var-colIter=0;
var-rowIter=0;

for(var i=0;i
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);
var片段=[];

for(var i=0;i
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);
var片段=[];

对于(var i=0;i
piecessString
的值是多少?您究竟为什么要手动创建JSON。您发现这个概念很容易出错。您的引号对于JSONUse jsonlint来说都是错误的,请确保JSON数据的格式正确,然后尝试JSON。解析检查:即使它是字符串,也不意味着它是有效的JSON这里的esson是,您永远不应该手工构建JSON。如果您必须在JavaScript中生成JSON,请使用
JSON.stringify()
。有趣的评论,但绝对有价值!谢谢你的帮助,我现在明白了。
片段字符串的价值是什么?你到底为什么要手动创建JSON。你发现这个概念很容易出错。JSONUse jsonlint为了确保JSON数据的格式正确,你的引用都是错误的,然后试试JSON.Parse检查:即使是字符串也不意味着它是有效的JSON。这里的主要教训是,你永远不应该手工构建JSON。如果你必须用JavaScript生成JSON,请使用
JSON.stringify()
。有趣的注释,但绝对有价值!谢谢你的帮助,我现在明白了。谢谢。这很有意义!谢谢。这很有意义!