TypeError: Объект типа 'YANGBaseClass' не сериализуем в формате JSON - PullRequest
0 голосов
/ 12 мая 2019

У меня есть скрипт Yang, в котором у меня есть контроллер, и я хочу отправить этот json-скрипт jang через UDP-пакет, но перед этим я хочу сбросить некоторые входные данные json, но при использовании дампов json возникает ошибка.Поскольку я новичок в сценарии yang и дампе json, я не могу понять, почему он не работает.

module wireless_to_orc{

    namespace "https://wireless.com/wireless_to_orc";

    prefix "wireless_to_orc";

    typedef ipv4-address{
          type string{
          pattern
             '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
           +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
           + '(%[\p{N}\p{L}]+)?';
            }
    }
    typedef mac-address {
          type string {
              pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
                }
    }
    typedef throughput{
          type decimal64{
        fraction-digits 2;
                range "1 .. 3.14 | 10 | 20..max";
        }
    }
    typedef Signal{
          type decimal64{
        fraction-digits 2;
                range "1 .. 3.14 | 10 | 20..max";
        }
    }
    grouping client_one{
        leaf mac{
            type mac-address;
            }
        leaf ip{
            type ipv4-address;
            }
        leaf throughput{
            type throughput;
            }
        leaf Signal{
            type Signal;
            }
        }
    container ControllerMac{
        container Aps{
            container ApMac{
                list clients{
                    key "mac";
                    uses client_one;
                    }
                }
            }
    }
}

Я пытаюсь использовать дампы json для этой модели, но я получаю эту ошибку, как указано выше.

Я пытался сделать json dump следующим образом.

import wireless_to_orc
from pyangbind.lib.xpathhelper import YANGPathHelper
from pyangbind.lib.pybindJSON import dumps,loads
from pyangbind.lib.serialise import pybindJSONDecoder
sw= wireless_to_orc.wireless_to_orc()

ob=sw.ControllerMac.Aps.ApMac.clients.add("01:23:45:67:89:ab")
ob.ip="192.168.1.1"

import json
lm=json.dumps(sw.get())
print(lm)

Я получаю следующую ошибку: я новичок в использовании сценария yang и использовании для этого дампов json.Пожалуйста, дайте мне знать, что не так.

Ошибка:

Traceback (most recent call last):
  File "/home/teja/PycharmProjects/new/pub.py", line 11, in <module>
    lm=json.dumps(sw.get())
  File "/usr/lib/python3.6/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python3.6/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python3.6/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python3.6/json/encoder.py", line 180, in default
    o.__class__.__name__)
TypeError: Object of type 'YANGBaseClass' is not JSON serializable
...