2017-10-04 1 views
-2

[EDIT] je les données plus tard acteur de modification et il a été réfléchissais dans l'objet lors de l'expansion, je vais accepter ma réponse quand je peux. [/ EDIT]JSON.parse() retourne des valeurs incorrectes pour les entiers

J'ai une simple chaîne JSON qui a besoin de l'analyse syntaxique:

{"Points": [{"x": 0,"y": 33},{"x": 2200,"y": 28},{"x": 4400,"y": 23},{"x": 6600,"y": 20},{"x": 8800,"y": 19},{"x": 11000,"y": 18},{"x": 13200,"y": 17},{"x": 15400,"y": 15},{"x": 17600,"y": 13},{"x": 19800,"y": 12}]} 

La chaîne est générée par le code C++ à des fins de dessin graphique. Quand je le colle dans un formateur json il analyse bien, donnant des valeurs appropriées. Le problème auquel je suis confronté sont les valeurs Y de wierd, par exemple le premier objet dans le tableau "Points" a la valeur y de 20 - et il n'y a aucun 20 dans la chaîne.

Voir la photo ci-jointe, elle explique tout. Le code avant ce qui est sur l'image est la suivante:

RequestJSONParse: function(Data) 
{ 
    var Request = Data.split("|"); 
    var RequestType = Request[0]; 
    var RequestParams = Request[1]; 
    var RequestData = undefined; 

    if (typeof Request[2] != "undefined" && Request[2] != "") 
    {      
     console.log("---"); 
     console.log(Request[2]); 
     console.log("---"); 

     RequestData = JSON.parse(Request[2]); 

     console.log("---"); 
     console.log(RequestData); 
     console.log("---"); 
    } 

Ma question est - sont les quelques caractères spéciaux ou d'une manière spéciale JSON.parse spécifiquement x, traite les valeurs y? Ou est-ce un problème d'encodage ou quelque chose auquel je ne peux même pas penser? J'ai été sur ce projet pendant 2 ans et n'ai jamais rencontré quelque chose comme ceci et la plupart de notre interface utilisateur est faite en analysant les données JSON.

Image explaining the problem

+3

Voici un 20: '{" x ": 6600," y ": 20}' – Pointy

+2

http://jsbin.com/paganawado/1/edit?js,console - Je ne peux pas reproduire le problème. – Quentin

+0

Notez également le 'i' bleu à côté de votre journal' RequestData' - manipulez-vous les données dans ceci - il semble qu'il a peut-être été modifié après que vous l'avez connecté, et vous visualisez les données modifiées après l'avoir développé. –

Répondre

0

@JamesThorpe était sur le point, j'étais modifier l'objet plus tard et mes changements ont été reflétés dans l'objet quand il a été étendu. Le symbole bleu était le chaînon manquant pour moi.

2

Vérifiez ici votre faire comme ce

var json = "{\"Points\": [{\"x\": 0,\"y\": 33},{\"x\": 2200,\"y\": 28},{\"x\": 4400,\"y\": 23},{\"x\": 6600,\"y\": 20},{\"x\": 8800,\"y\": 19},{\"x\": 11000,\"y\": 18},{\"x\": 13200,\"y\": 17},{\"x\": 15400,\"y\": 15},{\"x\": 17600,\"y\": 13},{\"x\": 19800,\"y\": 12}]}"; 
var Request = json.split("|"); 
var data = JSON.parse(Request[0]); 
console.log(data); 

U peut utiliser le code ci-dessus si ur chaîne de cette manière obtenir ....