这是一个PARSE REST API问题。我需要发送一些json来使用Parse REST API查询解析服务器。 json需要包含两个具有相同名称的键" $或"。忽略第一个键/值,服务器使用第二个键/值。我意识到词典不能有两个同名的键。我花了很多时间查看文档,但不清楚多个$或可以完成多少。有没有办法解决?
import json,httplib,urllib
connection = httplib.HTTPSConnection('api.parse.com', 443)
params = urllib.urlencode({"where":json.dumps({
"gender": "male",
"$or": [
{
"brand": "nike"
},
{
"brand": "adidas"
}
],
"$or": [
{
"prim_color": "red"
},
{
"prim_color": "blue"
}
]
})})
connection.connect()
connection.request('GET', '/1/classes/My_Class?%s' % params, '', {
"X-Parse-Application-Id": "API-ID",
"X-Parse-REST-API-Key": "REST-KEY"
})
result = json.loads(connection.getresponse().read())
print result
答案 0 :(得分:2)
如doc所示,$or
接受具有一个或多个条件的数组,以便可选择实现:
import json,httplib,urllib
connection = httplib.HTTPSConnection('api.parse.com', 443)
params = urllib.urlencode({"where":json.dumps({
"gender": "male",
"$or": [
{
"brand": "nike"
},
{
"brand": "adidas"
},
{
"prim_color": "red"
},
{
"prim_color": "blue"
}
]
})})
connection.connect()
connection.request('GET', '/1/classes/Player?%s' % params, '', {
"X-Parse-Application-Id": "${APPLICATION_ID}",
"X-Parse-REST-API-Key": "${REST_API_KEY}"
})
result = json.loads(connection.getresponse().read())
print result
编辑: 好的,您希望列表中至少有一个品牌/颜色。
可悲的是,他们的解析器非常糟糕,你无法进行复杂的查询(在你的情况下甚至在$and
里面进行$or
...)。其中的运算符无法嵌入到其他运算符中(到目前为止只实现了$or
)。
无论如何,您可以使用$in
作为$or
条件...
import json,httplib,urllib
connection = httplib.HTTPSConnection('api.parse.com', 443)
params = urllib.urlencode({"where":json.dumps({
"gender": "male",
"brand": { "$in": ["nike", "adidas"] }
"prim_color": { "$in": ["red", "blue"] }
})})
connection.connect()
connection.request('GET', '/1/classes/Player?%s' % params, '', {
"X-Parse-Application-Id": "${APPLICATION_ID}",
"X-Parse-REST-API-Key": "${REST_API_KEY}"
})
result = json.loads(connection.getresponse().read())
print result