Я получаю следующий пример сообщения Json, которое может быть глубоко вложенным. Насколько глубоко, заранее неизвестно.
{
"body": {
"blmRequest": {
"events": [
{
"event": "Login",
"params": [
{
"key": "pin",
"value": "xxxx"
},
{
"key": "version",
"value": "xxxxxx"
},
{
"key": "NFC",
"value": "x"
}
]
},
{
"event": "TCD_Recargaxxxx",
"params": [
{
"key": "amt",
"value": "xx"
},
{
"key": "cel",
"value": "xxxx"
},
{
"key": "pin",
"value": "xxxx"
},
{
"key": "version",
"value": "xxxxxx"
},
{
"key": "NFC",
"value": "x"
}
]
}
]
}
}
}
Я хочу десериализовать Json в свой класс. которые работают как своего рода корневой объект:
public class Response
{
public OrderedDictionary<string, object> body { get; set; }
}
Класс OrderedDictionary<string,object>
— это настраиваемый словарь, который я хотел бы использовать для всех объектов Json, найденных во время обхода глубокой иерархии. Стандартный класс List<object>
я хотел бы использовать для всех массивов Json, которые будут найдены во время обхода иерархии. Все остальные типы Simple должны быть сохранены как простые объекты.
К сожалению, Json.Net сдается после одного уровня в глубину и возвращает в качестве значения Словаря иерархию JObject.
Я также не могу использовать ExpandoObject
в качестве значения OrderedDictionary
.
Что и как я могу перезаписать в Json.Net, чтобы мой сценарий работал. Я хотел бы использовать только возможности расширения Json.Net.