【问题标题】:The compiler does not accept my JSON notation编译器不接受我的 JSON 表示法
【发布时间】:2020-05-08 06:26:21
【问题描述】:

"Uncaught SyntaxError: Unexpected token c in JSON at position 2" 这就是我的编译器所说的。我在 JSON 中写道:

{ chGamma:7.5, chTheta:7.5, dgamma:0.01, distance:10.5, 
dtheta:0.03, freq:1, gamma:90, maaiveld:0.0, maxX:0, maxY:0, 
maxZ:0, minX:0, minY:0, minZ:0, panPointX:300, panPointY:300, 
persp:1, speedFac:2, straal:1, theta:0, zoom:1, zoomFac:2 }  

当我在https://www.freeformatter.com/json-formatter.html#ad-output 中输入此字符串时,它没有问题并将其转换为所需的对象。 如果我用这段代码喂 Chrome:

function initViewValues(){
    var viewJSON = '{ chGamma:7.5, chTheta:7.5, dgamma:0.01, distance:10.5, dtheta:0.03, freq:1, gamma:90, maaiveld:0.0, maxX:0, maxY:0, maxZ:0, minX:0, minY:0, minZ:0, panPointX:300, panPointY:300, persp:1, speedFac:2, straal:1, theta:0, zoom:1, zoomFac:2} ' 

    var obj = JSON.parse(viewJSON);   
}

上面提到的错误返回给我。我能做什么?

【问题讨论】:

  • JSON 键使用引号 {"chGamma":7.5。只需检查您提供的网站的“JSON 格式”下的输出和提示。这就是它应该的样子。
  • 请提供更多细节。共享错误日志对您理解和提供解决方案没有太大帮助。

标签: javascript json string-parsing


【解决方案1】:

这是您可以从普通 Javascript 对象移动到 JSON 并返回的方法。

const objectPreJSON = {
  chGamma: 7.5,
  chTheta: 7.5,
  dgamma: 0.01,
  distance: 10.5,
  dtheta: 0.03,
  freq: 1,
  gamma: 90,
  maaiveld: 0.0,
  maxX: 0,
  maxY: 0,
  maxZ: 0,
  minX: 0,
  minY: 0,
  minZ: 0,
  panPointX: 300,
  panPointY: 300,
  persp: 1,
  speedFac: 2,
  straal: 1,
  theta: 0,
  zoom: 1,
  zoomFac: 2
};

const objectJSON = JSON.stringify(objectPreJSON);
console.log(objectJSON);

const parsedObject = JSON.parse(objectJSON);
console.log(parsedObject);

objectPreJSON 是一个普通的 Javascript 对象,不是有效的 JSON。这就是为什么您需要 stringify 将其转换为有效的 JSON。

 '{ chGamma:7.5, chTheta:7.5, dgamma:0.01, distance:10.5, dtheta:0.03, freq:1, gamma:90, maaiveld:0.0, maxX:0, maxY:0, maxZ:0, minX:0, minY:0, minZ:0, panPointX:300, panPointY:300, persp:1, speedFac:2, straal:1, theta:0, zoom:1, zoomFac:2}'

这也不是有效的 JSON,普通 Javascript 对象周围的单引号不会将其转换为有效的 JSON。

对象的键必须是有效字符串,即"validString"notValidString
例如{ "chGamma":7.5, ...

objectJSON 是您的对象需要具有的外观才能成为有效的 JSON。

【讨论】:

  • 虽然这很好并且有效,但它并不能真正解释为什么初始代码不起作用。
  • 会添加说明。
猜你喜欢
  • 1970-01-01
  • 2018-09-18
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多