Я использую JavaScriptSerializer
в .NET для десериализации структур, которые могут быть вашей стандартной плоской парой ключ/значение, например:
{
"Value": 3.14,
"Type": "Real"
}
Или более сложный, с таким внутренним иерархическим объектом-значением:
{
"Value": { "something": "test" },
"Type": "JsonData"
}
У меня проблема в том, что в случае "Type": "JsonData"
объект может быть произвольным. Я не могу сделать никаких предположений относительно того, какой будет его структура.
Однако «верхние слои» моего приложения будут знать, что делать с этими данными.
Поэтому мне нужно найти способ сохранить поле Value в виде строки, независимо от того, содержит ли оно целое число, строку или полную структуру JSON. По сути, я не хочу, чтобы JavaScriptSerializer
там что-то анализировал. Я хотел бы иметь возможность иметь такой класс:
public class JsonObject
{
public string Value { get; set; }
public string Type { get; set; }
}
С Value
, содержащим необработанное ванильное значение, которое было в моем JSON.
Есть ли способ запретить .NET анализировать часть моего JSON?
Пожалуйста, не предлагайте использовать другую библиотеку, такую как JSON.NET. Я знаю, что он, вероятно, сможет это сделать, но это для проекта, который будет распространяться как библиотека. Вот почему я предпочел бы, чтобы моя библиотека зависела только от стандартной платформы .NET.
json
библиотек синтаксического анализа. - person Amit Kumar Ghosh   schedule 04.09.2015Type
- это строка - почему бы тогда не использовать такой класс? Десериализация‹T› принимает цель тип - person Panagiotis Kanavos   schedule 04.09.2015Deserialize<T>
? - person Florian Segginger   schedule 04.09.2015