在包含“éèà”字符时将Json反序列化为对象时出错

时间:2011-05-12 16:42:24

标签: c# .net json deserialization

我尝试使用DataContractJsonSerializer将JSON字符串反序列化为object。一切正常,直到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 个答案:

答案 0 :(得分:1)

该错误似乎表明您在字符串末尾缺少引号?

为了更好地帮助我们,你能发布有效且不起作用的JSON吗?

答案 1 :(得分:0)

除了已接受的答案外, JSON实施中似乎存在问题。 {{3}中的纯 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);
}