首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用pyangbind解码器将json反序列化为yang。

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

Stack Overflow用户
提问于 2018-08-20 17:54:07
回答 1查看 443关注 0票数 0

我试图反序列化一个json,这是一个有效的格式w.r.to,杨模型定义的。这个例子是在pyangbind文档中给出的。但是json格式与我在这里粘贴的有点不同。

https://github.com/robshakir/pyangbind/tree/master/docs/example/simple-serialise

杰森:

代码语言:javascript
运行
复制
{
    "a-container": {
        "a-value": 8
    },
    "a-list": [
        {
            "the-key": "entry-one"
        },
        {
            "the-key": "entry-two"
        }
    ]
}

杨:

代码语言:javascript
运行
复制
    module simple_serialise {
        yang-version "1";
        namespace "http://rob.sh/yang/examples/ss";
        prefix "ss";

        container a-container {
            leaf a-value {
                type int8;
            }
        }

        list a-list {
            key 'the-key';
            leaf the-key {
                type string;
            }
        } 
   }

我试着用以下方法进行反序列化:

代码语言:javascript
运行
复制
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')

当我试图反序列化时,我会得到以下错误。

代码语言:javascript
运行
复制
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'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-23 13:19:48

Pyangbind期望字典中的键作为您在模型中给出的' key‘值。

代码语言:javascript
运行
复制
list a-list {
    key 'the-key';

在你的例子中,“键”的值。

代码语言:javascript
运行
复制
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')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51936122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档