using System.Collections.Generic;
public static void Main()
string json = MockAPI.GetJson();
Statistics stats = JsonConvert.DeserializeObject<Statistics>(json);
static void DumpStatistics(Statistics stats, string indent = "")
Console.WriteLine(indent + "Kind: " + stats.Kind);
if (stats.SelfLink != null)
Console.WriteLine(indent + "SelfLink: " + stats.SelfLink);
if (stats.Entries != null)
Console.WriteLine(indent + "Entries: ");
foreach (var kvp in stats.Entries)
Console.Write(indent + kvp.Key + ": ");
case EntryType.NestedStats:
DumpStatistics(entry.NestedStats, indent + " ");
case EntryType.Description:
Console.WriteLine(entry.Description);
Console.WriteLine(entry.Value);
[JsonProperty("entries")]
public Dictionary<string, Entry> Entries { get; set; }
public string Kind { get; set; }
[JsonProperty("selfLink")]
public string SelfLink { get; set; }
enum EntryType { Value, Description, NestedStats }
public long Value { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("nestedStats")]
public Statistics NestedStats { get; set; }
public EntryType EntryType
if (NestedStats != null) return EntryType.NestedStats;
if (Description != null) return EntryType.Description;
public static string GetJson()
private static readonly string JSON = @"
""kind"": ""tm:ltm:pool:members:memberscollectionstats"",
""selfLink"": ""https://device/mgmt/tm/ltm/pool/myPoolName/members/stats?ver=12.1.2"",
""https://device/mgmt/tm/ltm/pool/myPoolName/members/~Common~myPoolName/stats"": {
""kind"": ""tm:ltm:pool:members:membersstats"",
""selfLink"": ""https://device/mgmt/tm/ltm/pool/myPoolName/members/~Common~myPoolName/stats?ver=12.1.2"",
""description"": ""min 1 of /Common/prod-olbtp_https""
""description"": ""/Common/myPoolName""
""serverside.bitsOut"": {
""value"": 28010721155520
""serverside.curConns"": {
""serverside.maxConns"": {
""serverside.pktsOut"": {
""serverside.totConns"": {
""status.availabilityState"": {
""description"": ""available""
""status.enabledState"": {
""description"": ""enabled""
""status.statusReason"": {
""description"": ""The pool is available""
""https://device/mgmt/tm/ltm/pool/myPoolName/members/~Common~myPoolName/members/stats"": {
""https://device/mgmt/tm/ltm/pool/myPoolName/members/~Common~myPoolName/members/~Common~10.10.10.30:443/stats"": {
""description"": ""10.10.10.30""
""description"": ""min 1 of /Common/prod-olbtp_https (pool monitor)""
""description"": ""/Common/10.10.10.30""
""description"": ""/Common/myPoolName""
""serverside.bitsOut"": {
""serverside.curConns"": {
""serverside.maxConns"": {
""serverside.pktsOut"": {
""serverside.totConns"": {
""description"": ""enabled""
""status.availabilityState"": {
""description"": ""available""
""status.enabledState"": {
""description"": ""enabled""
""status.statusReason"": {
""description"": ""Pool member is available""
""https://device/mgmt/tm/ltm/pool/myPoolName/members/~Common~myPoolName/members/~Common~10.10.10.40:443/stats"": {
""description"": ""10.10.10.40""
""description"": ""min 1 of /Common/prod-olbtp_https (pool monitor)""
""description"": ""/Common/10.10.10.40""
""description"": ""/Common/myPoolName""
""serverside.bitsOut"": {
""serverside.curConns"": {
""serverside.maxConns"": {
""serverside.pktsOut"": {
""serverside.totConns"": {
""description"": ""enabled""
""status.availabilityState"": {
""description"": ""available""
""status.enabledState"": {
""description"": ""enabled""
""status.statusReason"": {
""description"": ""Pool member is available""