Получать JSON структурированные параметры в функции Javascript - PullRequest
0 голосов
/ 07 февраля 2020

Как создать javascript функцию, которая получит JSON -подобный объект в качестве параметра, например, так:

function foo() {
    //handle args somehow
}

И затем сможет вызывать его так:

var someObj = {
    arg1: "some",
    arg2: "thing",
    options: {
        opt1: "asd",
        opt2: false
    }
}

foo(someObj);

Также, как обрабатывать параметры, которые не отправляются в функцию (в этом случае opt2 опускается):

var someObj = {
    arg1: "some",
    arg2: "thing",
    options: {
        opt1: "asd",
        //opt2: false
    }
}

foo(someObj);

Спасибо.

Ответы [ 3 ]

2 голосов
/ 07 февраля 2020

Ваш вопрос не имеет ничего общего с JSON. Это обычные JavaScript объектные литералы.

Обычно, если ваша функция ожидает параметры, это определить вашу функцию так:

function foo(obj) {

}

Оттуда вы можете получить доступ к свойствам этого объекта, как и любой другой.

function foo(obj) {
  console.log(obj.options.opt1);
}
0 голосов
/ 07 февраля 2020

Если вам нужно обработать объект аргумента, например, удалить ключи, значения которых ложны, тогда вы можете использовать следующий метод foo, который принимает объект и возвращает объект после удаления.

const foo = obj => ({
  ...obj,
  options: Object.fromEntries(
    Object.entries(obj.options).filter(([, value]) => value)
  )
});

var someObj = {
  arg1: "some",
  arg2: "thing",
  options: {
    opt1: "asd",
    opt2: false
  }
};

console.log(foo(someObj));
0 голосов
/ 07 февраля 2020

Определите функцию, как показано ниже:

 function foo(obj) {
        //handle args somehow
    }

, а затем используйте ее foo(someObj), где someObj - ваш json.

, если в вашем объекте отсутствует свойство, то вы обрабатываете это как:

if (obj.options.opt2)
{
    console.log('opt2 is available');
} 
else
{
    console.log('opt2 is not available');
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...