Как фильтровать json через jsonschema в python

#python #json #jsonschema

#python #json #jsonschema

Вопрос:

У меня есть файл json на Python и относительная json-схема, я хочу отфильтровать из входного файла json все элементы, которые не удовлетворяют относительной json-схеме.

Например:

Схема

 {
  "type":"object",
  "$schema": "http://json-schema.org/draft-03/schema",
  "required":false,
  "properties":{
    "address": {
      "type":"object",
      "required":true,
      "properties":{
        "city": {
          "type":"string",
          "required":true
        },
        "houseNumber": {
          "type":"number",
          "required":false
        },
        "streetAddress": {
          "type":"string",
          "required":true
        }
      }
    },
    "phoneNumber": {
      "type":"array",
      "required":false,
      "items":
      {
        "type":"object",
        "required":false,
        "properties":{
          "number": {
            "type":"string",
            "required":false
          },
          "type": {
            "type":"string",
            "required":false
          }
        }
      }
    }
  }
}
  

Ввод Json:

 {
  "address":{
    "streetAddress": "21 2nd Street",
    "city":"New York",
    "houseNumber":12
  },
  "phoneNumber":
    [
    {
      "type":"home",
      "number":"212 555-1234",
      "description":"blabla"
    }
  ]
}
  

Элемент «description»:»blabla» отсутствует в схеме json и должен быть отфильтрован.

Вывод Json:

 {
  "address":{
    "streetAddress": "21 2nd Street",
    "city":"New York",
    "houseNumber":12
  },
  "phoneNumber":
    [
    {
      "type":"home",
      "number":"212 555-1234"
    }
  ]
}
  

Я нашел это https://github.com/alank64/json-schema-filter но это для javascript.
Известно ли вам о каком-либо скрипте, способном выполнять это на python?

Комментарии:

1. Схема JSON предназначена для проверки, а не фильтрации данных.

2. Не могли бы вы поделиться решением, если вы решили проблему? Спасибо!

3. Я бы предположил, что вам нужен валидатор схемы json для выполнения этой фильтрации. Итак, я думаю, вы могли бы спросить в github.com/Julian/jsonschema посмотреть, есть ли какой-либо способ использовать этот пакет для простой реализации фильтрации.

Ответ №1: