2013-02-21 3 views
0

Je reçois l'erreur suivante:Erreur lors de l'analyse chaîne JSON

uncaught exception: Invalid JSON: {"id":1,"channel":"V125954","text":"{"nick":"Du","visit":"1","text":"hello","_ref":"Du","_cur":"Du","_ip":"Du","_browser":"Du","_os":"Du","_td":"12:29"}"}

Lorsque vous essayez d'analyser avec la fonction suivante:

var parseJSON = function(data) { 
    if (!data || !isString(data)) { 
     return null; 
    } 

    // Make sure leading/trailing whitespace is removed (IE can't handle it) 
    data = trim(data); 

    // Attempt to parse using the native JSON parser first 
    if (window.JSON && window.JSON.parse) { 
     try { 
     return window.JSON.parse(data); 
     } catch(e) { 
     throw "Invalid JSON: " + data; 
     console.log(e); 
     } 
    } 

    // Make sure the incoming data is actual JSON 
    // Logic borrowed from http://json.org/json2.js 
    if (validChars.test(data.replace(validEscape, "@").replace(validTokens, "]").replace(validBraces, ""))) { 
     return (new Function("return " + data))(); 
    } 

    throw "Invalid JSON: " + data; 
    }; 

Des données sont envoyées comme celui-ci par nodejs:

 var options = { 
      uri: 'http://localhost/pub?id=' + req.params.channel, 
      method: 'POST', 
      json: { 
      "nick": "Du", 
      "visit": "1", 
      "text": "hej", 
      "_ref": "Du", 
      "_cur": "Du", 
      "_ip": "Du", 
      "_browser": "Du", 
      "_os": "Du", 
      "_td": "12:29",                                        
      } 
     }; 

     request_helper(options, function (error, response, body) { 
      if (!error && response.statusCode == 200) { 
      console.log("ok") 
      } 
     }); 

Des idées sur ce qui pourrait être faux?

+0

Le JSON est pas valide, regardez http://jsonlint.com/ cela peut aider toi. –

Répondre

0

Votre json n'est pas valide.

utilisez http://jsonlint.com/ pour valider votre fichier json.

JSON corrigé

{ 
    "id": 1, 
    "channel": "V125954", 
    "text": { 
     "nick": "Du", 
     "visit": "1", 
     "text": "hello", 
     "_ref": "Du", 
     "_cur": "Du", 
     "_ip": "Du", 
     "_browser": "Du", 
     "_os": "Du", 
     "_td": "12: 29" 
    } 
} 
0

Vous êtes chaîne JSON est invalide, c'est la raison pour laquelle vous obtenez l'erreur. Essayez quelque chose comme:

{ 
    "id": 1, 
    "channel": "V125954", 
    "text": { 
     "nick": "Du", 
     "visit": "1", 
     "text": "hello", 
     "_ref": "Du", 
     "_cur": "Du", 
     "_ip": "Du", 
     "_browser": "Du", 
     "_os": "Du", 
     "_td": "12: 29" 
    } 
} 

Vous pouvez valider vos chaînes JSON à http://jsonlint.org/

La bonne syntaxe des structures imbriquées dans JSON est:

{ 
    "obj": { 
     "foo": "bar" 
    } 
} 

PAS

{ 
    "obj": "{ 
     "foo": "bar" 
    }" 
} 
0

les données ont le probl em

{"id":1,"channel":"V125954","text":"{"nick":"Du","visit":"1","text":"hello","_ref":"Du","_cur":"Du","_ip":"Du","_browser":"Du","_os":"Du","_td":"12:29"}"} 

"text": "{"nick":"Du... cette partie a erreur u besoin d'échapper comme \"nick ou ce shud être les données

{"id":1,"channel":"V125954","text":'{"nick":"Du","visit":"1","text":"hello","_ref":"Du","_cur":"Du","_ip":"Du","_browser":"Du","_os":"Du","_td":"12:29"}'}; 
+0

Le deuxième exemple n'est pas JSON valide non plus. Les chaînes sont toujours indiquées par des guillemets. –

+0

merci de marquer cela, mais j'ai déjà spécifié dans la déclaration à ce sujet pour échapper les citations. – Sandeep

Questions connexes