Я пытаюсь десериализовать следующие объекты JSON для C#. Тем не менее, я пытаюсь достичь этого, не создавая классы для объектов "1"
. Это всего лишь небольшой фрагмент JSON, который я буду обрабатывать, а некоторые объекты JSON будут содержать до 40 дочерних объектов, то есть мне придется дублировать много кода.Deserializing complex JSON to C# objects
Есть ли способ десериализовать этот стиль JSON на объекты C# без создания классов для 1, 2 и т. Д.?
{
"WANConnectionDevice": {
"1": {
"WANPPPConnection": {
"1": {
"ExternalIPAddress": {
"_value": "0.0.0.0",
"_timestamp": "2016-08-04T08:51:37.813Z",
"_type": "xsd:string",
"_writable": false
},
"Password": {
"_writable": true,
"_timestamp": "2016-08-02T10:40:35.134Z",
"_value": "test6",
"_type": "xsd:string"
},
"Username": {
"_writable": true,
"_timestamp": "2016-08-02T10:40:35.134Z",
"_value": "[email protected]",
"_type": "xsd:string"
},
"MACAddress": {
"_writable": false,
"_timestamp": "2016-08-02T16:48:15.188Z",
"_value": "",
"_type": "xsd:string"
}
}
}
},
"2": {
"WANIPConnection": {
"1": {
"ExternalIPAddress": {
"_writable": true,
"_timestamp": "2016-08-02T16:48:15.188Z",
"_value": "",
"_type": "xsd:string"
},
"MACAddress": {
"_writable": false,
"_timestamp": "2016-08-02T16:48:15.188Z",
"_value": "",
"_type": "xsd:string"
}
}
}
}
}
}
Вот пример некоторых из тех классов, которые я могу получить его десериализации, к которому не практично или хороший дизайн и то, что я в надежде избежать.
public class _1
{
public ExternalIPAddress ExternalIPAddress { get; set; }
public Password Password { get; set; }
public Username Username { get; set; }
public MACAddress MACAddress { get; set; }
}
public class WANPPPConnection
{
public _1 _1 { get; set; }
}
public class _1
{
public WANPPPConnection WANPPPConnection { get; set; }
}
public class WANIPConnection
{
public _1 { get; set; }
}
public class _2
{
public WANIPConnection WANIPConnection { get; set; }
}
ли десериализации с классами работает? Или у вас проблемы с этим? Вы можете назвать классы по-разному (например, 'Device_1',' Device_2', 'Connection_1' и т. Д.) И использовать [' JsonPropertyAttribute'] (http://www.newtonsoft.com/json/help/html/SerializationAttributes.htm) для сопоставления свойства json object '1',' 2' и т. д. Почему вы думаете, что это «не практичный или хороший дизайн» *? – Sinatr
@ Sinatr Проблема с тем, что это не практичный или хороший дизайн, заключается в том, что используется метод 'Device_1, Device_2 и т. Д. '. будет означать повторение одного и того же кода до 40 раз для одного из объектов JSON, которые мы получаем. –