Json 通过XML-RPC与Odoo的交互

Json 通过XML-RPC与Odoo的交互,json,xml-rpc,odoo,erp,Json,Xml Rpc,Odoo,Erp,在实习期间,我被告知要构建一个Django应用程序,通过XML-RPC从Odoo检索数据,据我所知,xmlrpc web服务器只支持XML格式,但当我在搜索和阅读部分遵循Odoo10的官方文档时,我觉得响应是JSON格式的,这对我很好。我只是想知道我是否错过了什么 有什么澄清吗?谢谢。不完全是JSON,而是Python对象列表、字典等。。。准备通过JSON库的dumps方法转换为JSON字符串。看看这个使用XMLRPC的Python控制台的行为。首先,我用ALLOW search_read方法进

在实习期间,我被告知要构建一个Django应用程序,通过XML-RPC从Odoo检索数据,据我所知,xmlrpc web服务器只支持XML格式,但当我在搜索和阅读部分遵循Odoo10的官方文档时,我觉得响应是JSON格式的,这对我很好。我只是想知道我是否错过了什么


有什么澄清吗?谢谢。

不完全是JSON,而是Python对象列表、字典等。。。准备通过JSON库的dumps方法转换为JSON字符串。看看这个使用XMLRPC的Python控制台的行为。首先,我用ALLOW search_read方法进行了查询。然后我询问接收到的结果的类型,这是一个数组Python对象。然后,为了将这个Python对象转换为JSON字符串,我使用dumps方法。这就是你的JSON

>>> res = models.execute_kw(
    db,
    uid,
    password,
    'res.partner',
    'search_read',
    [[
        ['is_company', '=', True],
        ['customer', '=', True]
    ]],
    {
        'fields': ['name', 'country_id', 'comment'],
        'limit': 5
    }
)

>>> res
[
    {
        'comment': False,
        'country_id': [69, 'Spain'],
        'id': 1665,
        'name': 'Customer A'
    }, {
        'comment': False,
        'country_id': [69, 'Spain'],
        'id': 5799,
        'name': 'Customer B'
    }, {
        'comment': False,
        'country_id': [69, 'Spain'],
        'id': 1946,
        'name': 'Customer C'
    }, {
        'comment': False,
        'country_id': [69, 'Spain'],
        'id': 1367,
        'name': 'Customer D'
    }, {
        'comment': False,
        'country_id': [69, 'Spain'],
        'id': 2066,
        'name': 'Customer E'
    }
]

>>> type(res)
<type 'list'>

>>> import json
>>> json.dumps(res)

'[{"comment": false, "country_id": [69, "Spain"], "id": 1665, "name": "CUSTOMER A"}, {"comment": false, "country_id": [69, "Spain"], "id": 5799, "name": "CUSTOMER B"}, {"comment": false, "country_id": [69, "Spain"], "id": 1946, "name": "CUSTOMER C"}, {"comment": false, "country_id": [69, "Spain"], "id": 1367, "name": "CUSTOMER D"}, {"comment": false, "country_id": [69, "Spain"], "id": 2066, "name": "CUSTOMER E"}]'

>>> your_json = json.dumps(res)  # This variable is ready to be sent as JSON

多亏了@ChesuCR.

json.dumps,我更新了我的答案以澄清它。dumps可以转换Python对象列表、字典、带大写字母的布尔值。。。转换为JSON字符串。另一方面,json.load将json字符串转换为Python对象。不能在Python上直接使用JSON对象。如果您想将python对象转换为字符串发送到外部远程应用程序,那么将其转换为字符串非常有用@ChesuCR,我已经更新了我的答案,谢谢!您好@Imed,我已经更新了我的答案,但我有一个问题,如果您想在Django应用程序中接收XMLRPC响应,您是否更喜欢使用Python,因为您在XMLRPC查询中接收的是Python对象而不是JSON?您好,事实上,我确实希望接收JSON响应,这就是我得到的结果。但当我开始写实习报告时,我发现XMLRPC只返回一个XML响应,这让我感到困惑,这就是为什么我问这个问题。