2011-05-12 1 views
1

J'ai essayé d'utiliser DataContractJsonSerializer pour désérialiser la chaîne JSON à l'objet. Tout fonctionne correctement jusqu'à ce que la chaîne JSON contienne des caractères français, tels que é è à. Il lancera l'exception:Erreur lors de la désérialisation de JSON pour l'objet lors de l'inclusion des caractères "é è à"

Une erreur s'est produite lors de la désérialisation de l'objet de type **. Le jeton « " » était attendue, mais « é ».

est-il que quelqu'un sait le résoudre?

{ "features": [ { "id": "0c50cdc5-da97-45be-aad2-ad1433d8e285LastEditedFeature", "wkt": "", "fieldValues": [ { "Key": "formeID", "Value": "1" }, { "Key": "calqueID", "Value": "1" }, { "Key": "featureID", "Value": "0c50cdc5-da97-45be-aad2-ad1433d8e285" }, { "Key": "Name", "Value": "ABCDé" } ] } ] } 

Je crains que peut-être il est causé par l'é dans « string ABCDE » .

+3

Vous pouvez manquer des guillemets autour de votre chaîne. Que dit [JSONLint] (http://www.jsonlint.com/) à ce sujet? – Groo

+1

Ou peut-être un problème de charset. Vérifiez si votre contenu sérialisé est UTF-8 et que vous le désérialisez en UTF-8. – CodesInChaos

Répondre

1

cette erreur semble indiquer qu'il vous manque un devis à la fin de votre chaîne?

pour mieux nous aider, pourriez-vous poster le JSON qui fonctionne et ne fonctionne pas?

+0

la chaîne JSON: {"features": [{"id": "0c50cdc5-da97-45be-aad2-ad1433d8e285LastEditedFeature", "wkt": "", "fieldValues": [{"Key": "formeID", "Value": "1"}, {"Key": "calqueID", "Value": "1"}, {"Key": "featureID", "Valeur": "0c50cdc5-da97-45be-aad2-ad1433d8e285 "}, {" Clé ":" Nom "," Valeur ":" ABCDé "}]}}} le code: DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer (type); MemoryStream jsonStream = nouveau MemoryStream (Encoding.Default.GetBytes (jsonString)); ResultObject = jsonSerializer.ReadObject (jsonStream) ; jsonStream.Close(); cela fonctionne si l'encodage est UTF8. – CuiPengFei

+3

"cela fonctionne si l'encodage est UTF8" Quel autre encodage une personne saine utiliserait-elle? – CodesInChaos

+0

@CodesInChaos - [Je peux voir] (http://stackoverflow.com/a/35676723/2392157) ce problème dans [tag: .net-3.5] même avec UTF-8. Je n'ai trouvé aucun moyen de contourner cela jusqu'à présent. – miroxlav

0

Outre la réponse acceptée, il semble y avoir un problème dans l'implémentation JSON . Plain UTF-8 La sérialisation JSON et la désérialisation en entraînent cette erreur sur la chaîne d'épreuve illustrée ci-dessous. Mais si vous passez le projet à ou supérieur, le problème disparaît immédiatement.

string proofString = ""; 
for (int i = 1; i <= 0xffff; i++) { 
    if (i >= 0xd800 && i < 0xe000) continue; // skip code points not belonging to UTF-8 
    proofString += Strings.ChrW(i); 
} 
Questions connexes