parse:属性名需要双引号(var json = JSON.parse(xhr.responseText);)

b5lpy0ml  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(75)

https://www.dropbox.com/s/h59v7elqn05t7lc/bag.js
下面的代码给出了json文件的链接

SyntaxError: JSON.parse: expected double-quoted property name

字符串

JavaScript:

var init = function () {
    var canv = document.getElementsByTagName("canvas")[0];
    var w = canv.clientWidth;
    var h = canv.clientHeight;

    var renderer = new THREE.WebGLRenderer({
        canvas: canv
    });
    renderer.setSize(w, h);

    var scene = new THREE.Scene();

    var camera = new THREE.PerspectiveCamera(
        15, // Field of view
    w / h, // Aspect ratio
    0.1, // Near
    10000 // Far
    );
    camera.position.set(-1, 1, 15);
    scene.add(camera);

    var light = new THREE.PointLight(0xFFFFDD);
    light.position.set(-15, 10, 15);
    scene.add(light);

    var ambient = new THREE.AmbientLight(0x999999);
    scene.add(ambient);

    var loader = new THREE.JSONLoader();
    var onGeometry = function (geom) {
        var mesh = new THREE.Mesh(geom, new THREE.MeshFaceMaterial());
        scene.add(mesh);
    };
    loader.load("vwbug.js", onGeometry);

    var render = function () {
        renderer.render(scene, camera);
    };

    setInterval(render, 10);
};

window.onload = init;
window.onresize = init;

nkoocmlb

nkoocmlb1#

我认为这是由于第8行多了一个逗号造成的。

"materials": [ { 
    "DbgColor" : 15658734, 
    "DbgIndex" : 0, 
    "DbgName" : "dummy", 
    "colorDiffuse" : [ 1, 0, 0 ], 
} ],

字符串
要发现这样的问题,验证器可能会有所帮助,例如,http://jsonlint.com

w6lpcovy

w6lpcovy2#

这个功能对我来说很好用:

function fixJsonString(str) {
 const fixedStr = str.replace(/'/g, '"').replace(/(\w+):/g, '"$1":');
 return JSON.parse(fixedStr);
}

字符串
具体情况是当对象的一个属性没有用双引号(“)括起来时,解析器会发现它有冲突。
这个简单的功能让我忙碌了2天,所以我真的希望任何人都会发现它有用。

相关问题