Генерация JSON JS-объекта только с некоторыми атрибутами в JSON - PullRequest
0 голосов
/ 22 апреля 2011

Я генерирую JSON из объекта JavaScript.Но мне не нужны все атрибуты объекта в JSON.Есть ли способ (или библиотека), чтобы сделать это?До сих пор я переопределял функцию toJSON и возвращал новый объект с уменьшенными атрибутами, но это был обходной путь, не так ли?

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

JSON.stringify принимает второй параметр, функцию «замена», которую вы можете использовать для исключения определенных свойств.

var exclude = { 'akey': true };

var obj = { 'akey': 2, 'anotherkey': 3 };

JSON.stringify(obj, function (key, value) {
    if(exclude[key]) return undefined;
    return value;
});

=> "{'anotherkey':3}"
0 голосов
/ 22 апреля 2011

Забавно. Я только что написал некоторый код для этого (с объектами), который затем можно сериализовать для цели.

// sorta like $.extend but limits to updating existing properties
// from a template. takes any number of objects to merge.
function mergeObjects(template) {
    var obj={};
    if (arguments) {
        for (var i = 0; i < arguments.length; i++) {
            newObj = arguments[i];
            for (var prop in template) {
                if (newObj.hasOwnProperty(prop)) {
                    obj[prop] = newObj[prop];
                }
            }
        }
    }
    return obj;
}

Способ использования этой функции - с шаблоном, обладающим необходимыми свойствами, например,

var template = {
  firstname: '',
  lastname: ''
}

var someObject = {
  firstname: "bryce",
  lastname: "nesbitt",
  title: "ubergeek"
}

var filteredObject = mergeObjects(template,someObject);

->

   filteredObject: {
      firstname: "bryce",
      lastname: "nesbitt",
    }

http://jsfiddle.net/AARMW/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...