如果存在某个值,则解析Json

时间:2018-08-29 21:33:03

标签: python json

如果只有“ success” ='true'的值,我需要从JSON下面解析“ order”,否则会引发异常。

尝试过以下方法,但不确定如何在尝试中包括“ true”检查:

{  
   "success":true,
   "order":"123345"
} 

下面是我正在尝试的代码,它也不会从打印中得到任何结果。

import json
from pprint import pprint


data = json.load(open('data.json'))
#pprint(data)

try:
    check_key = data['success']
except KeyError:
    #continue
    print(check_key)
   #print(data['order'])

2 个答案:

答案 0 :(得分:1)

您应该在某种条件下评估数据['成功'],是否为假,然后引发异常。

import json

data = json.load(open('data.json'))

if data['success'] is not True:
  raise Exception("Success is false")

order = data['order']
print(order)

答案 1 :(得分:0)

  

如果只有“ success” ='true'的值,我需要从JSON下面解析“ order”,否则会引发异常。

如果值为False,没有函数会自动引发异常。你需要自己写。

但这很简单:

check_key = data.get('success')
if not check_key:
    raise MyKindOfError(f'response success was {check_key}')
do_stuff(data['order'])

(您实际上不需要在那里使用get;您可以可以data['success']引发KeyError(如果不存在的话,然后单独检查)虚假的值并引发您自己的错误。但是我假设您可能想像处理success一样处理缺失的false,而您要提出的错误可能不是{{1} },这种情况比较简单。)


作为旁注,您已经在此时解析了JSON 。您拥有的是KeyError

它最初来自解析JSON的事实没有任何区别;它是一个普通的旧Python dict,具有与其他dict相同的方法等。因此,想到“如何使用JSON ...”确实没有帮助;只会使您忘记使用dict有多么容易。