Мне нужно десериализовать строки JSON, которые я не могу контролировать.Это крайний пример, но он имеет смысл:
string fooJson = @"
{
'foo_baz': 123,
foo_bar: 'buuuu',
""Xyz"": ""\/Date(405928800000-0600)\/"" //1982-11-12
}";
JSON должен быть десериализован в этот класс C #, который я не могу изменить:
public class Foo
{
public string Bar { get; set; }
public int Baz { get; private set; }
public DateTime Xyz { get; set; }
}
Сериализация Foo
не проблема.
После десериализации, результаты должны быть ...
Bar
== "buuuu"
Baz
==123
Xyz
== DateTime.MinValue
или неинициализированный
... но у меня проблемы.
DataContractJsonSerializer
вместе с * 1029Атрибуты * и DataMember
в Foo
и его членах в основном идеальны, за исключением того, что они ограничивают свойства JSON и строки, которые не заключены в двойные кавычки.
JavaScriptSerializer
, кажется, обрабатывает нестандартное цитирование, но я не могу заставить его игнорировать Xyz
или сопоставлять foo_baz
с Baz
и foo_bar
с Bar
.
Это будет частью распространяемой библиотеки классовПоэтому я стараюсь по возможности избегать сторонних инструментов, таких как JSON.NET.Однако, если нет встроенного способа сделать то, что мне нужно, я открыт для предложений сторонних инструментов.