首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >特殊字符,XmlException和DataContractJsonSerializer

特殊字符,XmlException和DataContractJsonSerializer
EN

Stack Overflow用户
提问于 2013-09-25 17:18:50
回答 2查看 845关注 0票数 0

每当被反序列化的JSON包含'@‘这样的字符时,我就会看到输出中出现了XmlException。最后,它仍然成功地反序列化了它,但它使我不知道出了什么问题。它也大大降低了调试速度,因为许多json响应都包含了这些字符。

复制代码:

代码语言:javascript
运行
复制
public static class JsonHelper
{     
    public static T Deserialize<T>(string json)
    {
        var obj = Activator.CreateInstance<T>();
        using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
        {
            var serializer = new DataContractJsonSerializer(obj.GetType());
            obj = (T)serializer.ReadObject(ms);
        }
        return obj;
    }
}

[DataContract]
class JsonObject
{
    [DataMember(Name = "@name")]
    public string Name { get; set; }
}


public partial class MainPage : PhoneApplicationPage
{
    private static string json = "{\"@name\":\"Something\"}";

    // Constructor
    public MainPage()
    {
        InitializeComponent();

        var obj = JsonHelper.Deserialize<JsonObject>(json);
        // obj.Name now contains "Something" as it should, but an XmlException has also happened.
    }

“System.Xml.XmlException”类型的异常发生在System.Xml.ni.dll中,未在托管/本机边界之前处理

我是不是遗漏了什么?如果可能的话,我不想在反序列化之前进行任何搜索&替换。

编辑

如果我在.NET 4.5控制台应用程序中运行相同的代码,我就不会看到这个异常发生。

EN

回答 2

Stack Overflow用户

发布于 2013-09-25 17:27:11

你能试着把打给JsonHelper.Deserialize的电话.在试捕捉和检查内部异常,看看是否有更多的细节。此外,您可以尝试将JsonObject类的访问器设置为public,并查看这是否有帮助。

票数 0
EN

Stack Overflow用户

发布于 2013-09-26 17:34:25

开始使用json.NET,它没有任何问题处理这些类型的响应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19011286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档