Ошибка десериализации Json для объекта при включении символов «é è à» - PullRequest
1 голос
/ 12 мая 2011

Я пытался использовать DataContractJsonSerializer для десериализации строки JSON в объект.Все работает нормально, пока строка JSON не содержит некоторые французские символы, такие как é è à.Будет выдано исключение:

Произошла ошибка при десериализации объекта типа **.Маркер "" "ожидался, но обнаружил" é ".

Кто-нибудь знает, как его решить?

{ "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é" } ] } ] }

Боюсь, что, возможно, это вызвано éв строке "ABCDé".

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Эта ошибка, кажется, указывает на то, что вы пропустили кавычку в конце вашей строки?

Чтобы лучше помочь нам, не могли бы вы опубликовать JSON, который работает и не работает?

0 голосов
/ 28 февраля 2016

Помимо принятого ответа, существует проблема в реализации JSON. Обычная UTF-8 Сериализация и десериализация JSON в приводит к этой ошибке в контрольной строке, показанной ниже. Но если вы переключите проект на или выше, проблема немедленно исчезнет.

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);
} 
...