2013-04-26 8 views
0

J'ai un objet avec la propriété contient apostrophe ('), barre oblique (/) ou Environmental.NewLinenon valide JSON Parser Erreur

I construit cet objet sous forme de chaîne JSON et essayer de l'affecter à un jqGrid.

Mais il montre Invalid JSON Parser error

Comment puis-je analyser cela avec succès.

myObj=new {[email protected]"Samp'le value"} 

Dans ASP.Net MVC, return JSON(myObj) est utilisé pour la construction de JSON.

Est-ce que l'une ont une idée, où nous devons configurer pour gérer cette '/Environmental.NewLine(\n) lors de l'analyse JSON?

Nous devons utiliser toute autre bibliothèque pour gérer comme Newtosoft JSON?

JSON à partir du serveur

 {"total":1 ,"page":1,"records":3,"rows":[{"i":0,"cell":"","1","1","DesSinglApostropAndURLhasEnterKeyChar", 
"Samp'le value","http://google.com/Dashboard.aspx?ParcelNbr= {SITE_APN}","False","",""]},"i":1,"cell":"","2","2","DesWithSlashAndURLwithSlash", 
"Sample\value2","http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=\XYZ","False","",""]},{"i":2,"cell":["","3","3","DesWithAmpersand","Sample & value3"","http://Googole.com","False","",""]}]} 
+2

Pourriez-vous fournir un échantillon? –

+0

@Garath a ajouté un exemple de construction JSON dans le code – Billa

+0

"Comment puis-je l'analyser avec succès"? En javascript? Cet objet sera sérialisé en json très bien et peut être utilisé dans js de toute façon vous le voulez. Que faites-vous exactement avec l'objet json qui vous donne une erreur? –

Répondre

3

spond aux spécifications (voir here ou here) seulement " et \ caractères doivent être se sont échappés. Certains autres caractères pourraient être échappés. Donc le caractère ' non échappé n'est pas une erreur. Je suppose qu'il y a une autre raison pour l'erreur "Erreur JSON Parser invalide".

Vous devez inclure plus de code JavaScript complet qui montre comment vous utilisez jqGrid, le code d'action du contrôleur ASP.NET MVC ou plus de réponse JSON complète qui renvoie le serveur. En général, vous pouvez produire une réponse JSON correcte sans Json.NET (Newtosoft) ou avec celle-ci ou toute autre bibliothèque.

Vous devez inclure l'option autoencode: true pour afficher les données de texte correctement dans jqGrid. Vous devez utiliser l'option datatype: "json" et jsonReader (voir the documentation). Il ne suffit donc pas de produire des données JSON ou XML bien formatées pour afficher correctement les données dans jqGrid. Il pourrait être nécessaire d'inclure des options jqGrid qui donnent des informations sur le format exact des données.

MISE À JOUR: Les données JSON que vous avez publiées sont réellement corrompues. jsonlint.org est un bon endroit où vous pouvez valider les données JSON.Probablement vous essayez de produire des données JSON manuellement, car les données sont tout à fait tort: ​​

{ 
    "total": 1, 
    "page": 1, 
    "records": 3, 
    "rows": [ 
     { 
      "i": 0, 
      "cell": "", <---- it must be "cell": ["" 
      "1", 
      "1", 
      "DesSinglApostropAndURLhasEnterKeyChar", 
      "Samp'le value", 
      "http://google.com/Dashboard.aspx?ParcelNbr= {SITE_APN}", 
      "False", 
      "", 
      "" 
     ] 
    }, 
    "i": 1, <--- it must be {"i": 1 
    "cell": "", 
    "2", 
    "2", 
    "DesWithSlashAndURLwithSlash", 
    "Sample\value2", <--- it must be "Sample\\value2" or "Sample value2" 
    "http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=\XYZ", <--- \XYZ is WRONG 
    "False", 
    "", 
    "" 
] 
}, 
{ 
"i": 2, 
"cell": [ 
    "", 
    "3", 
    "3", 
    "DesWithAmpersand", 
    "Sample & value3"","http: //Googole.com","False","",""]}]} <-- "Sample & value3"" is WRONG 

Les données contient 5 erreurs de syntaxe:

    utilisation
  • de "cell": "" au lieu de "cell": [""
  • utilisation
  • de }, "i": 1, au lieu de }, {"i": 1,
  • utilisation de "Sample\value2" au lieu de "Sample value2" ou "Sample\\value2"
  • utilisation de "http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=\XYZ" au lieu de "http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=XYZ" ou "http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=\\XYZ"
  • utilisation
  • de "Sample & value3"" au lieu de "Sample & value3" ou "Sample & value3\""

De plus vous avez utilisé i propriété au lieu de id ("i": 1 doit être fixé à "id": 1). Ce n'est pas une erreur dans JSON, mais vous devriez produire les données pour jqGrid, vous devriez donc conserver le format attendu par jqGrid. Voir the documentation. La réponse JSON fixe devrait être quelque chose comme

{ 
    "total": 1, 
    "page": 1, 
    "records": 3, 
    "rows": [ 
     { 
      "id": 0, 
      "cell": [ 
       "", 
       "1", 
       "1", 
       "DesSinglApostropAndURLhasEnterKeyChar", 
       "Samp'le value", 
       "http://google.com/Dashboard.aspx?ParcelNbr= {SITE_APN}", 
       "False", 
       "", 
       "" 
      ] 
     }, 
     { 
      "id": 1, 
      "cell": [ 
       "", 
       "2", 
       "2", 
       "DesWithSlashAndURLwithSlash", 
       "Sample value2", 
       "http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=XYZ", 
       "False", 
       "", 
       "" 
      ] 
     }, 
     { 
      "id": 2, 
      "cell": [ 
       "", 
       "3", 
       "3", 
       "DesWithAmpersand", 
       "Sample & value3", 
       "http: //Googole.com", 
       "False", 
       "", 
       "" 
      ] 
     } 
    ] 
} 

Je vous recommande d'analyser le code des exemples d'utilisation ASP.NET MVC avec jqGrid (voir here par exemple) et de fixer votre code de serveur.

+0

Merci et génial Oleg! Je revois mon code et je reviens vers vous, si je n'arrive pas à le résoudre. – Billa

+0

Bonjour Oleg, j'ai mis à jour le JSON du serveur – Billa

+0

@Billa: Les données JSON que vous avez postées sont totalement fausses. Vous ne devriez jamais faire de sérialisation manuelle à JSON. Voir ** MISE À JOUR ** partie de ma réponse pour plus de détails. – Oleg