Очистка объекта с помощью схемы JSON

со схемой JSON я могу проверить объект, но могу ли я его очистить? Например, у меня есть схема

const s = {
    "type": "object",
    "properties": {
        "p1": {"type": "string"}
    }
}

И Object const o = {p1: 345, p_not_is_schema: '3333'}, тогда я делаю что-то вроде const oClean = schemaProcessor.clean(o, s) и получаю объект от o, который подходит к схеме s {p1: '345'}?

Я думаю, вы могли бы попробовать Машинопись

AVAVT 11.02.2019 15:03

возможно, попробуйте jsonschema значения по умолчанию

Kamil Kiełczewski 11.02.2019 15:04

@AVAVT Мне не нужна типизация :)

Maksim Zarechnyi 11.02.2019 15:05

Опция removeAdditionalайв делает это.

str 11.02.2019 15:12

@str спасибо = ) Я подумал, что это должно быть реализовано по-другому, без мутации объекта )

Maksim Zarechnyi 11.02.2019 15:17

Мне не нравится такой способ сделать это, хотя он был бы наиболее эффективным. Вы можете сделать копию своих данных, прежде чем передавать их через функцию проверки с включенной этой опцией. Тем не менее, мне, вероятно, придется предложить вам написать собственную функцию для этого! ajv предоставляет возможность добавлять свои собственные ключевые слова и делать что-то на их основе, но я не совсем уверен, что вы этого хотите. Предполагая, что ваши схемы имеют глубину только одного объекта, не составит большого труда написать для этого собственный код.

Relequestual 11.02.2019 15:44

@Relequestual тявп, это все правда, но 1) это только пример, у меня может быть много уровней 2) я просто подумал, что это очень распространенная проблема и кто-то уже это сделал = )

Maksim Zarechnyi 11.02.2019 15:47

К сожалению для вас, это не обычное использование схемы JSON. Схема JSON в основном используется для проверки JSON. Вы можете использовать additionalProperties false, чтобы предотвратить дополнительные свойства, но тогда источник JSON должен будет соответствующим образом изменить свой JSON.

Relequestual 11.02.2019 15:49

Вы МОЖЕТЕ использовать обратную связь проверки, чтобы удалить биты JSON, используя предоставленные пути, а затем попытаться повторно проверить =]

Relequestual 11.02.2019 15:50

@Relequestual хм, это самый быстрый способ очистить документы, поступающие от другой службы или клиента, перед тем, как поместить их в хранилище документов. Конечно, мы можем использовать модели и т. д., но это слишком много кода =)

Maksim Zarechnyi 11.02.2019 15:55

Самый быстрый способ — отвергнуть все, что не соответствует вашей схеме!

Relequestual 11.02.2019 15:56

@Relequestual и каждый раз получаешь ошибку, когда служба решила добавить новый ключ? )

Maksim Zarechnyi 11.02.2019 15:57

Давайте продолжить обсуждение в чате.

Relequestual 11.02.2019 15:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
13
169
0

Другие вопросы по теме