Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用pyangbind json解码器将json反序列化为yang_Python - Fatal编程技术网

Python 无法使用pyangbind json解码器将json反序列化为yang

Python 无法使用pyangbind json解码器将json反序列化为yang,python,Python,我正在尝试将一个json反序列化,它是一种有效的格式w.r.到定义的yang模型。pyangbind文档中给出了此示例。但是json格式与我在这里粘贴的有点不同 JSON: 杨: 我试图反序列化: from pyangbind.lib import pybindJSON from lib import simple_serialise s = '''{ "a-container": { "a-value": 8 }, "a-list": [

我正在尝试将一个json反序列化,它是一种有效的格式w.r.到定义的yang模型。pyangbind文档中给出了此示例。但是json格式与我在这里粘贴的有点不同

JSON:

杨:

我试图反序列化:

from pyangbind.lib import pybindJSON

from lib import simple_serialise

s = '''{
    "a-container": {
        "a-value": 8
    },
    "a-list": [
        {
            "the-key": "entry-one"
        },
        {
            "the-key": "entry-two"
        }
    ]
}'''
sip = pybindJSON.loads(s, simple_serialise, 'simple_serialise')
当我尝试反序列化时,出现以下错误

Traceback (most recent call last):
  File "/Users/joshisk/PycharmProjects/tapi-pyang/src/main.py", line 38, in <module>
    sip = pybindJSON.loads(di1, simple_serialise, 'simple_serialise') #type: simple_serialise.simple_serialise
  File "/anaconda3/lib/python3.6/site-packages/pyangbind/lib/pybindJSON.py", line 58, in loads
    path_helper=path_helper, extmethods=extmethods, overwrite=overwrite)
  File "/anaconda3/lib/python3.6/site-packages/pyangbind/lib/serialise.py", line 302, in load_json
    key_order = d[key].keys()
AttributeError: 'list' object has no attribute 'keys'
回溯(最近一次呼叫最后一次):
文件“/Users/joshik/PycharmProjects/tapi-pyang/src/main.py”,第38行,在
sip=pybindJSON.load(di1,simple_serialise,'simple_serialise')#类型:simple_serialise.simple_serialise
加载文件“/anaconda3/lib/python3.6/site packages/pyangbind/lib/pybindJSON.py”,第58行
path\u helper=path\u helper,extmethods=extmethods,overwrite=overwrite)
文件“/anaconda3/lib/python3.6/site packages/pyangbind/lib/serialise.py”,第302行,在load_json中
key_order=d[key].key()
AttributeError:“列表”对象没有属性“键”

Pyangbind需要一个字典,其中key是您在模型中给出的“key”值

list a-list {
    key 'the-key';
在您的情况下,“键”的值

from pyangbind.lib import pybindJSON

from lib import simple_serialise

s = '''{
    "a-container": {
        "a-value": 8
    },
    "a-list": {
        "entry-one": {
            "the-key": "entry-one"
        },
        "entry-two": {
            "the-key": "entry-two"
        }
    }
}'''
sip = pybindJSON.loads(s, simple_serialise, 'simple_serialise')

“但是json格式与我在这里粘贴的有点不同。”为什么不粘贴有问题的代码呢?我添加了更多信息。谢谢
list a-list {
    key 'the-key';
from pyangbind.lib import pybindJSON

from lib import simple_serialise

s = '''{
    "a-container": {
        "a-value": 8
    },
    "a-list": {
        "entry-one": {
            "the-key": "entry-one"
        },
        "entry-two": {
            "the-key": "entry-two"
        }
    }
}'''
sip = pybindJSON.loads(s, simple_serialise, 'simple_serialise')