检查键/值是否为JSON

Sim*_*mon 6 python json

有了这段代码

import sense
import json

sense.api_key = '...'
node = sense.Node.retrieve('........')
feed = node.feeds.retrieve('presence')

events = feed.events.list(limit=1)

result = json.dumps(events,indent=1)
print result
Run Code Online (Sandbox Code Playgroud)

我得到一个像这样的JSON-Feed:

{
 "links": {...}, 
 "objects": [
  {
   "profile": "GenStandard", 
   "feedUid": ".....", 
   "gatewayNodeUid": ".....", 
   "dateServer": "2015-02-28T09:57:22.337034", 
   "geometry": null, 
   "data": {
    "body": "Present", 
    "code": 200
   }, 
   "signal": "-62", 
   "dateEvent": "2015-02-28T09:57:22.000000", 
   "type": "presence", 
   "payload": "2", 
   "nodeUid": "....."
  }
 ], 
 "totalObjects": 875, 
 "object": "list"
}
Run Code Online (Sandbox Code Playgroud)

如何检查'body'是否"存在"(或'代码'是'200')?我的脚本应该返回TRUE或FALSE

UPDATE

如果我按照答案中的建议添加此代码,它可以正常工作:

d=json.loads(result)
def checkJson(jsonContents):
    bodyFlag = True if "body" in jsonContents["objects"][0]["data"] and jsonContents["objects"][0]["data"]["body"] == "Present" else False

    return bodyFlag

print checkJson(d)
Run Code Online (Sandbox Code Playgroud)

Ale*_*dri 6

你也应该检查一下是否存在正文.

def checkJson(jsonContents):
    bodyFlag = True if "body" in jsonContents["objects"][0]["data"] and jsonContents["objects"][0]["data"]["body"] == "Present" else False
    codeFlag = True if "code" in jsonContents["objects"][0]["data"] and jsonContents["objects"][0]["data"]["code"] == 200 else False

    return bodyFlag or codeFlag

print checkJson(result)
Run Code Online (Sandbox Code Playgroud)

  • 您将沿着同一分支 - __jsonContents["objects"][0]["data"]__ 4 次!在这种情况下,习惯上给中间变量赋值。并且您使用三元运算符来分配布尔值!如果第一个条件是 _True_ - 不需要评估第二个 (2认同)