Я использую REST API, который возвращает JSON строку.
Пример документа:
{
"kind": "collection#ExtendedACE",
"selfLink": "https://1.2.3.4/api/access/in/Alohomora/rules",
"rangeInfo": {
"offset": 0,
"limit": 3,
"total": 3
},
"items": [
{
"kind": "object#ExtendedACE",
"selfLink": "https://1.2.3.4/api/access/in/Alohomora/rules/2638577060",
"permit": false,
"sourceAddress": {
"kind": "AnyIPAddress",
"value": "any"
},
"destinationAddress": {
"kind": "objectRef#NetworkObj",
"refLink": "https://1.2.3.4/api/objects/networkobjects/facebook.com",
"objectId": "facebook.com"
},
"sourceService": {
"kind": "NetworkProtocol",
"value": "tcp"
},
"destinationService": [
{
"kind": "TcpUdpService",
"value": "tcp/http"
},
{
"kind": "TcpUdpService",
"value": "tcp/https"
}
],
"active": true,
"remarks": [],
"ruleLogging": {
"logInterval": 300,
"logStatus": "Default"
},
"position": 1,
"isAccessRule": true,
"objectId": "2638577060"
},
{
"kind": "object#ExtendedACE",
"selfLink": "https://1.2.3.4/api/access/in/Alohomora/rules/2115120101",
"permit": false,
"sourceAddress": {
"kind": "objectRef#NetworkObjGroup",
"refLink": "https://1.2.3.4/api/objects/networkobjectgroups/Hermiona-source",
"objectId": "Hermiona-source"
},
"destinationAddress": {
"kind": "objectRef#NetworkObjGroup",
"refLink": "https://1.2.3.4/api/objects/networkobjectgroups/Hermiona-destination",
"objectId": "Hermiona-destination"
},
"sourceService": {
"kind": "NetworkProtocol",
"value": "icmp"
},
"destinationService": {
"kind": "NetworkProtocol",
"value": "icmp"
},
"active": true,
"remarks": [
"Test Hermiona Alohomora kouzlo"
],
"ruleLogging": {
"logInterval": 300,
"logStatus": "Default"
},
"position": 2,
"isAccessRule": true,
"objectId": "2115120101"
},
]
}
Проблема в destinationService , потому что я не знаю, как мне написать объект для десериализации.
1 / Если я использую
var varAccessInRulesCollection = (new JavaScriptSerializer()).Deserialize<RootObject>(strAccessInRulesGet).items;
, где класс publi c содержит Список
public class Item
{
...
public List<DestinationService> destinationService { get; set; }
...
}
результат - только первые элементы с коллекцией, второй элемент игнорируется (не анализируется)
2 / Если я использую
var varAccessInRulesCollection = (new JavaScriptSerializer()).Deserialize<RootObject>(strAccessInRulesGet).items;
, где класс publi c содержит объект
public class Item
{
...
public object destinationService { get; set; }
...
}
результатом является только второй элемент в виде массива, первый элемент игнорируется (не анализируется)
Существует некоторый код, как я могу сказать, что я хочу применить оба объекта с одинаковыми именами, анализируя json определен? Или как решить эту проблему?
Спасибо, Петр