Компилятор не принимает мою нотацию JSON - PullRequest
0 голосов
/ 08 мая 2020

"Uncaught SyntaxError: Неожиданный токен c в JSON в позиции 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);   
}

, он возвращается ко мне с вышеупомянутой ошибкой. Что я могу сделать?

1 Ответ

0 голосов
/ 08 мая 2020

Вот как вы можете перейти от обычного объекта 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);

objectPre JSON является нормальным 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 Object не меняют в действительный JSON.

Ключи вашего объекта должны быть действительными строками, например "validString", notValidString.
например, { "chGamma":7.5, ...

objectJSON - это то, что вы объект должен выглядеть, чтобы быть действительным JSON.

...