从 json 格式中提取项目

Extract items from json format

我正在尝试从 json 格式中提取数据,其中还包含字典列表。但是当我访问它时它显示 None.

我想做什么:-

我正试图从下面的反应中得到content

code.py

def extract():
    res = {
      "$schema": "http://json-schema.org/schema#",
      "anyOf": [{
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "response": {
                "type": "integer"
              },
              "content": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ]
                }
              }
            },
            "required": [
              "content",
              "response"
            ]
          }
        }
      ]
    }

    # When I try this then it shows an error
    json_ext = json.loads(res)
    print(json_ext['anyOf[0].properties'])

它returns为错误

TypeError: the JSON object must be str, bytes or bytearray, not dict

我也试过使用

def deep_get_imps(data, key: str):
    split_keys = re.split("[\[\]]", key)
    out_data = data
    for split_key in split_keys:
        if split_key == "":
            return out_data
        elif isinstance(out_data, dict):
            out_data = out_data.get(split_key)
        elif isinstance(out_data, list):
            try:
                sub = int(split_key)
            except ValueError:
                return None
            else:
                length = len(out_data)
                out_data = out_data[sub] if -length <= sub < length else None
        else:
            return None
    return out_data


def deep_get(dictionary, keys):
    return reduce(deep_get_imps, keys.split("."), dictionary)

AS

print(deep_get(res, "anyOf[0].items[0]"))

但是它 returns none,它仍然没有得到 content 响应。

我试了很多次了,还是不行。任何帮助将非常感激。提前致谢。

您的对象 res 是一个所谓的字典,这就是为什么您的代码在调用 json_ext = json.loads(res) 时抛出 TypeError 的原因,因为 loads 仅适用于字符串字符和类似类型。
你可能想做的更像这样:

def extract():
    res = {
          ...  # shortened for readability
    }
    print(res["anyOf"][0]["items"]["properties"]["content"])