我如何在python中读取JSON对象?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何在python中读取JSON对象?相关的知识,希望对你有一定的参考价值。

我目前正在处理Python Pygame项目,因为我必须使用JSON文件。我试图读取一个JSON文件,但我无法获取它来打印我想知道的内容。

这是JSON文件

  "pokemons": {
    "5": {
      "name": "Snivy",
      "type": "Grass",
      "hp": 45,
      "attack": 45,
      "defence": 55,
      "speed": 63,
      "moves": [
        "Tackle",
        "Leer",
        "null",
        "null"
      ],
      "level": 4,
      "xp": 54
    },
    "2": {
      "name": "Tepig",
      "type": "Fire",
      "hp": 65,
      "attack": 63,
      "defence": 45,
      "speed": 45,
      "moves": [
        "Tackle",
        "Tail Whip",
        "Ember",
        "null"
      ],
      "level": 7,
      "xp": 11
    }
  }
} 

我正在尝试从不同的“ ID”,也就是“ 5”和“ 2”中读取“名称”,“类型”等,但是我只能从“口袋妖怪”中打印“ 5”和“ 2”数组

with open("data.json", "r") as f:
    data = json.load(f)
    for i in data["pokemons"]:
        print(i)
答案

您已将此标题命名为json read from array inside of array python,但这里没有JSON数组(已转换为Python列表)-您具有JSON对象(已转换为Python字典)。

for i in data["pokemons"]:

data["pokemons"]是字典,因此像这样遍历它会为您提供键-"5"和“ 2”`。您可以使用它们来索引数据:

data["pokemons"][i]

这为您提供了一个代表单个宠物小精灵的对象(字典),您可以从中访问名称:

data["pokemons"][i]["name"]

更好的是,您可以直接遍历data["pokemons"]的值,而不是键:

for pokemon in data["pokemons"].values():
    name = pokemon["name"]

或者您也可以使用.items()一次获得两者:

for pid, pokemon in data["pokemons"].items():
    # use string formatting to display the pid and matching name together.
    print(f"pokemon number {pid} has name {pokemon['name']}")
另一答案

我的解决方案

datadict = json.loads(data)```

以上是关于我如何在python中读取JSON对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何从片段中的 JSON 响应中的对象获取数据

python python中的漂亮(或漂亮打印)JSON对象具有这一功能。在尝试了解什么时,我总是使用这个片段

如何从 Python 中的文件/流中懒惰地读取多个 JSON 值?

在 Python 3.4 中加载和读取具有多个 JSON 对象的 JSON 文件

在Python 中如何将类对象序列化为JSON?

在 Python 3.3 中读取 JSON 文件的异常行为 [重复]