Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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_Json - Fatal编程技术网

Python-迭代嵌套JSON数据问题

Python-迭代嵌套JSON数据问题,python,json,Python,Json,我正在学习Python,在迭代json数据文件以获取某些键和值时遇到了一些问题。我一直在PHP中这样做,但出于某种原因,我发现在Python中这样做有点挑战性。我已经尝试了堆栈溢出的一些方法,但我觉得我肯定错过了一个基本的方法。欢迎提出任何建议 这是我的JSON数据,我正在从一个文件加载它: { "pfcProductfeed": { "productfeed": { "models": [ {

我正在学习Python,在迭代json数据文件以获取某些键和值时遇到了一些问题。我一直在PHP中这样做,但出于某种原因,我发现在Python中这样做有点挑战性。我已经尝试了堆栈溢出的一些方法,但我觉得我肯定错过了一个基本的方法。欢迎提出任何建议

这是我的JSON数据,我正在从一个文件加载它:

{
  "pfcProductfeed": {
    "productfeed": {
      "models": [
        {
          "model": {
            "modelCode": "1",
            "description": "Product 1"
          }
        },
        {
          "model": {
            "modelCode": "2",
            "description": "Product 2"
          }
        },
        {
          "model": {
            "modelCode": "3",
            "description": "Product 3"
          }
        }
      ]
    }
  }
}
我想做的是迭代每个“模型”,并在循环中显示每个模型的模型代码和描述。我试过这个:

import json

with open('data/stack.json') as f:
    data = json.load(f)

models = data['pfcProductfeed']['productfeed']['models']
print(json.dumps(models, indent=4, sort_keys=True))

for model in models:
    #print(json.dumps(model, indent=4, sort_keys=True))
    print(model['description']) #How do I get at the keys, and their values

但这报告了错误:

打印(型号['description'])#如何获取键及其值 KeyError:“描述”

有没有人对如何正确地迭代这个问题有什么建议

非常感谢

詹姆斯参见下文

data = {
  "pfcProductfeed": {
    "productfeed": {
      "models": [
        {
          "model": {
            "modelCode": "1",
            "description": "Product 1"
          }
        },
        {
          "model": {
            "modelCode": "2",
            "description": "Product 2"
          }
        },
        {
          "model": {
            "modelCode": "3",
            "description": "Product 3"
          }
        }
      ]
    }
  }
}

models = data['pfcProductfeed']['productfeed']['models']
for model in models:
  print(model['model']['description'])
输出

Product 1
Product 2
Product 3

对模型中的模型使用
时:
模型是数组的对象。例如,第一个
模型的含义是:

{
    "model": {
        "modelCode": "1",
        "description": "Product 1"
    }
}
因此,如果您想打印
model
的键,您将拥有
['model']

如果您希望您的
型号
为:

{
        "modelCode": "1",
        "description": "Product 1"
}
然后您可以使用

for model in models:
    description = model['model']['description']

model['model']['description']
谢谢。我假设models:行中的for model表示我已经在数据中处于正确的级别。我相信当我用PHP做类似的事情时,它就是这样工作的。谢谢你的帮助!我要试一试!