【发布时间】:2011-01-13 06:59:02
【问题描述】:
这是用于 JSON API。 我不想拥有:
if method_str == 'method_1':
method_1()
if method_str == 'method_2':
method_2()
由于显而易见的原因,这不是最佳选择。我将如何以可重用的方式将映射字符串用于此类方法(另请注意,我需要将参数传递给被调用的函数)。
这是一个例子:
传入的 JSON:
{
'method': 'say_something',
'args': [
135487,
'a_465cc1'
]
'kwargs': {
'message': 'Hello World',
'volume': 'Loud'
}
}
# JSON would be turned into Python with Python's built in json module.
结果调用:
# Either this
say_something(135487, 'a_465cc1', message='Hello World', volume='Loud')
# Or this (this is more preferable of course)
say_something(*args, **kwargs)
【问题讨论】:
-
如果不是在 API 中使用,为什么会提到传入的 JSON 并在 JSON 对象中指定方法名称?你认为这样我就可以在我的 Python 代码中构建一个 JSON 字符串,然后将它传递给调用方法吗?
-
动态调用它会给你带来注入问题。
标签: python json api serialization