我希望编写一个json模式来涵盖此(简化)示例
{
"errorMessage": "",
"nbRunningQueries": 0,
"isError": False,
"result": {
"foo": {"price":10.0, "country":"UK"},
"bar": {"price":100.2, "country":"UK"}
}
}
Run Code Online (Sandbox Code Playgroud)
可以有这个非常琐碎的根架构
schema = {
"type":"object",
"required":True,
"properties":{
"errorMessage": {"type":"string", "required":True},
"isError": {"type":"boolean", "required":True},
"nbRunningQueries": {"type":"number", "required":True},
"result": {"type":"object","required":True}
}
}
Run Code Online (Sandbox Code Playgroud)
复杂的是结果{}元素。与标准模式不同,在标准模式中,结果将是相同对象的数组-每个对象都有一个id字段或类似的对象,此响应将模拟一个python字典,如下所示:
{
"foo": {},
"bar": {},
...
}
Run Code Online (Sandbox Code Playgroud)
因此,鉴于a将获得没有设置键的灵活大小的结果对象,我如何为此编写json模式?
我不会伤心地控制输入,否则我会将其重写为类似
{
"errorMessage": "",
"nbRunningQueries": 0,
"isError": False,
"result": [
{"id": "foo", "price":10.0, "country": "UK"},
{"id": "bar", "price":100.2, "country":"UK"}
]
}
Run Code Online (Sandbox Code Playgroud)
任何帮助或相关示例的链接都将非常有用。谢谢。
新的扭曲,只是尝试一些延期的东西.我有以下代码组成100个延迟调用的列表 - 每个等待一个随机时间并返回一个值.该列表打印结果并最终终止反应器.
但是,我很确定我停止反应堆的方式可能......不太好.
__author__ = 'Charlie'
from twisted.internet import defer, reactor
import random
def getDummyData(x):
"""returns a deferred object that will have a value in some random seconds
sets up a callLater on the reactor to trgger the callback of d"""
d = defer.Deferred()
pause = random.randint(1,10)
reactor.callLater(pause, d.callback, (x, pause))
return d
def printData(result):
"""prints whatever is passed to it"""
print result
def main():
"""makes a collection of deffered calls and then fires them. Stops reactor at end""" …Run Code Online (Sandbox Code Playgroud)