为啥 JSON bool 数据作为字符串传递给 Django 后端?

Posted

技术标签:

【中文标题】为啥 JSON bool 数据作为字符串传递给 Django 后端?【英文标题】:Why is the JSON bool data pass to the Django backend as a string?为什么 JSON bool 数据作为字符串传递给 Django 后端? 【发布时间】:2018-11-06 18:00:37 【问题描述】:

JSON data与Pythonrequest.params的对接:

http://localhost:8000/api/physicalservertask/list_for_home_workpanel/?has_physicalserver=false

如您所见,我在url 中添加了has_physicalserver 参数,这应该是逻辑“真”,逻辑“假”,但在我的Django API 中,我将它作为str

has_physicalserver_list = query_params.pop('has_physicalserver')
has_physicalserver = has_physicalserver_list[0] if (isinstance(has_physicalserver_list, list) and len(has_physicalserver_list) > 0) else ''

【问题讨论】:

因为不是JSON,只是一个查询参数。值始终是字符串;如果你想解析它,你应该明确地这样做。 【参考方案1】:

查询参数是字符串。你可以使用json解析它。

import json
has_physicalserver_list = query_params.pop('has_physicalserver') # string true/false
has_physicalserver_list = json.loads(has_physicalserver_list) # True/False

【讨论】:

以上是关于为啥 JSON bool 数据作为字符串传递给 Django 后端?的主要内容,如果未能解决你的问题,请参考以下文章

形参不能改变实参,为啥在用指针传递数值的时候又可以改变呢?

将 JSON 传递给 Dynamics CRM SharedVariable 而不是字符串

为啥 Vue 不读取我通过 PHP 作为道具传递的整个 JSON 对象?

将JSON对象作为属性传递给指令

将 BOOL 传递给 makeObjectsPerformSelector:withObject:

如何在 Objective-C 中将 BOOL 变量作为参数传递?