У меня есть скрипт 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