Python 在json中搜索特定值

Python 在json中搜索特定值,python,json,python-3.x,Python,Json,Python 3.x,我尝试使用Python3在json中搜索特定变量。结果通常是这样的 [ { "string": "00002000", "existedPrior": true }, { "string": "00002001", "existedPrior": false }, { "string": "00002002", "existedPrior": true }, { "string": "00002003",

我尝试使用Python3在json中搜索特定变量。结果通常是这样的

[
  {
    "string": "00002000",
    "existedPrior": true
  },
  {
    "string": "00002001",
    "existedPrior": false
  },
  {
    "string": "00002002",
    "existedPrior": true
  },
  {
    "string": "00002003",
    "existedPrior": true
  },
  {
    "string": "00002004",
    "existedPrior": false
  }
]
该脚本的目标是在“existedPrior”为false的位置搜索这些值,然后从该值中获取字符串并将其插入数组中。然后,我可以稍后获取数组的值,并针对另一个端点重新查询它们以获取更多数据

从我收集的资料来看,这有点接近我希望做的事情,但实际上并没有让我达到目的

import json
import requests

q = 'https://website.com/api/var'
r = requests.get(url=q)

strings = []

data = r.json()
i = 0

for item in data:
    if item['existedPrior'] == 'false':
        i += 1
        strings.append(item['string'])
        print(item['string'])
    else:
        break

print("New additions: ", i)
据我所知,json和python不共享布尔值的相同“定义”,这会带来麻烦。我在stackoverflow上的其他地方读到了如何处理这个问题,但它涉及到json.dumps和json.loads,以及各种我不能百分之百确定需要的混乱信息


另一方面,将json转换为python字典并从中进行搜索是否更好?

考虑使用enumerate:

for index, value in enumerate(data):
    if value["existedPrior"] == False:
        string.append(data[index]['string'])

bool可以很好地转换为python数据类型
r.json()
已经在将json反序列化到python字典中。作为补充,您真的需要
i
?它将与
len(strings)
相同(除非你有一个bug,在这种情况下,它总是
i
,而不是
len(strings)
,这是错误的)。可能令人困惑的是,JSON的
false
值的拼写与Python的
false
文本的拼写不同。(同样地,对于
true
/
true
null
/
None
)这就是为什么不能将JSON文本作为Python文本进行
eval
(或
ast.literal\u eval
)的原因。但是JSON对其
false
的含义没有任何定义(它只是定义为三个文本值中的一个,没有对其中任何一个进行解释),因此它的定义与Python的定义没有任何区别。此外,您可能听说JavaScript对false的定义与Python的定义不同。这一条是正确的(例如,在JavaScript中,
NaN
是错误的),这与这里无关。谢谢@jordanm,我现在正在研究如何正确使用字典。