如何在python中获取字段的特定值JSON?

时间:2015-07-04 15:18:17

标签: python json

我目前正致力于从json中提取字段,然后再使用它。因此我有面部参数,我想存储每个字段的值。我试图从面部的JSON中获取Gender值: JSON如下:

lock(object) {}

我想从上面的json中提取'女性'。 为此,我使用了这个:

{
  "face": [
    {
      "attribute": {
        "age": {
          "range": 5,
          "value": 24
        },
        "gender": {
          "confidence": 99.9999,
          "value": "Female"
        },
        "glass": {
          "confidence": 99.4157,
          "value": "None"
        },
        "pose": {
          "pitch_angle": {
            "value": 0.000001
          },
          "roll_angle": {
            "value": 0.650337
          },
          "yaw_angle": {
            "value": -0.42409
          }
        },
        "race": {
          "confidence": 98.058,
          "value": "Asian"
        },
        "smiling": {
          "value": 3.78394
        }
      },
      "face_id": "42245f24335ad21ea7c54f2db96a09b3",
      "position": {
        "center": {
          "x": 50.121951,
          "y": 35.97561
        },
        "eye_left": {
          "x": 43.465122,
          "y": 30.670488
        },
        "eye_right": {
          "x": 56.80878,
          "y": 30.821951
        },
        "height": 27.560976,
        "mouth_left": {
          "x": 45.649512,
          "y": 45.041707
        },
        "mouth_right": {
          "x": 55.134878,
          "y": 44.858049
        },
        "nose": {
          "x": 50.183415,
          "y": 38.410732
        },
        "width": 27.560976
      },
      "tag": ""
    }
  ],
  "img_height": 410,
  "img_id": "1e3007cb3d6cfbaed3a1b4135524ed25",
  "img_width": 410,
  "session_id": "76ec7f99a471418fa8862a2138cc589d",
  "url": "http://www.faceplusplus.com/wp-content/themes/faceplusplus/assets/img/demo/1.jpg?v=2"
}

我的代码在哪里不正确?

3 个答案:

答案 0 :(得分:2)

根据您的json示例,gender位于attribute内,因此您需要将其作为 -

进行访问
gender = soup['face'][0]['attribute']['gender']['value']

此外,似乎values是回读的json(字典),因此您可能希望使用values访问它,但我不确定您要实现的目标,所以我不能肯定地说。

答案 1 :(得分:0)

最后,我得到了答案,这是完美的。

with open('data.json') as da:
    data = json.loads(json.load(da))
print data['face'][0]['attribute']['gender']['value']

答案 2 :(得分:0)

您可以使用某些库,例如 objectpath ,它可以让您轻松搜索JSON。 只需导入库并构建对象树,然后键入要搜索的单词。

<强>导入:

import json
import objectpath

构建搜索树:

gender_tree = objectpath.Tree(values['face'])

输入搜索字词

gender_tuple = tuple(actions_tree.execute('$..gender'))

现在,您可以根据所需的值处理gender_tuple

在这里,您要搜索的字词是“性别”,请将其替换为您的合适字词,以便日后搜索。