Я вижу XmlException, возникающий из вывода всякий раз, когда JSON, десериализованный, содержит символы типа '@'. В конце концов, он все еще успешно десериализует его, но он меня не знает, что не так. Это также замедляет отладку, так как многие ответы json отражают эти символы.Специальные символы, XmlException и DataContractJsonSerializer
Кода для воспроизведения:
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, я не вижу, что это исключение происходит.
Спасибо за ответ. Установка аксессора не имеет никакого эффекта, просто пропустила его, когда я построил простой репрограмм из фактического сотона. И исключение, это поймано где-то внутри DataContractJsonSerializer, и я не могу удержаться на нем. –