Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查json父值是否为空_Python_Python 3.x - Fatal编程技术网

Python 检查json父值是否为空

Python 检查json父值是否为空,python,python-3.x,Python,Python 3.x,我可以使用什么方法来确定json父值是否为空 基本上我有一个像这样的url catalogue/items.json?category=1&item=scarf 有10多个类别 我想搜索所有类别,直到它发现json实际上返回了一个有效的价格指数,等等。。(即使类别中不存在项,它仍会在json中打印出类别中有多少项) 例如: 如果围巾属于第2类 {"total":100,"items":["name":"Scarf", "current":{"price":"122.5"}]} {"t

我可以使用什么方法来确定json父值是否为空

基本上我有一个像这样的url

catalogue/items.json?category=1&item=scarf
有10多个类别

我想搜索所有类别,直到它发现json实际上返回了一个有效的价格指数,等等。。(即使类别中不存在项,它仍会在json中打印出类别中有多少项)

例如:

如果围巾属于第2类

{"total":100,"items":["name":"Scarf", "current":{"price":"122.5"}]}
{"total":100,"items":[]}
如果第2类中不存在围巾

{"total":100,"items":["name":"Scarf", "current":{"price":"122.5"}]}
{"total":100,"items":[]}

在您的示例中,JSON字符串不正确,但我使用了正确的版本

import json

#-----

json_str = '''{"total":100,"items":{"name":"Scarf", "current":{"price":"122.5"}}}'''

data = json.loads(json_str)

if 'name' in data['items'] and data['items']['name'].lower() == 'scarf':
    print 'There is Scarf'
else:
    print 'There is NO Scarf'        

#-----

json_str = '''{"total":100,"items":{}}'''

data = json.loads(json_str)

if 'name' in data['items'] and data['items']['name'].lower() == 'scarf':
    print 'There is Scarf'
else:
    print 'There is NO Scarf'
结果:

There is Scarf
There is NO Scarf

编辑:建议您使用

if data.get('items', {}).get('name', '').lower() == 'scarf':
    print 'There is Scarf'
else:
    print 'There is NO Scarf'

不清楚您正在搜索的是什么特定JSON对象,格式是什么,需要的匹配有多接近(大小写不匹配),或者结果应该是什么样子(您显示的是无效的JSON)。如果数据['items'中的'name',这就是我需要的,谢谢。编辑:单击save To early+1或者,您可以只执行
data.get('items',{}).get('name','').lower()='scarf'