Используйте JSON.stringify
и replacer
обратный вызов для достижения этой цели:
function replacer(match, offset, fullstring)
{
return replacer.str;
}
replacer.str = "\u0022filterValues\u0022:[\u0022hi\u0022,\u0022bye\u0022]"; /* Use DOM node value */
var foo = JSON.stringify({
"Region": {
"filterField": "kw_Region",
"filterValues": [
"aa",
"bb"
]
},
"ApplicationName": {
"filterField": "kw_ApplicationName",
"filterValues": [
"aa",
"bb"
]
},
"IssueType": {
"filterField": "kw_IssueType",
"filterValues": [
"aa",
"bb"
]
},
"Outage": {
"filterField": "kw_Outage",
"filterValues": [
"aa",
"bb"
]
},
"Priority": {
"filterField": "kw_Priority",
"filterValues": [
"aa",
"bb"
]
}
}).replace(/"filterValues[^\]]+./g, replacer)
Вот некоторая документация по двум методам JSON для сериализации и преобразования, stringify
и parse
:
JSON.parse (source, reviver)
Этот метод анализирует текст JSON для создания объекта или массива.Может выдавать исключение SyntaxError.
Необязательный параметр reviver - это функция, которая может фильтровать и преобразовывать результаты.Он получает каждый из ключей и значений, и его исходное значение используется вместо исходного значения.Если он возвращает то, что получил, то структура не изменяется.Если он возвращает неопределенное значение, то член удаляется.
В конечном счете, reviver вызывается с пустой строкой и самым верхним значением, чтобы разрешить преобразование самого верхнего значения.Обязательно правильно обработайте этот случай, обычно возвращая указанное значение, иначе JSON.parse вернет undefined.
if (k === "") return v
JSON.stringify (value, replacer, space)
Метод stringify создает текст JSON из значения JavaScript.Если значение является объектом или массивом, структура будет посещаться рекурсивно, чтобы определить сериализацию каждого члена или элемента.Структура не должна быть циклической.
Когда значение объекта найдено, если объект содержит метод toJSON, будет вызван его метод toJSON и результат будет зашифрован.Метод toJSON не сериализуется: он возвращает значение, представленное парой имя / значение, которое должно быть сериализовано, или не определено, если ничего не нужно сериализовать.Методу toJSON будет передан ключ, связанный со значением, и он будет привязан к объекту, содержащему ключ.
Вы можете указать дополнительный метод замены.Он будет передан ключ и значение каждого члена, с этим связаны с содержащим объектом.Значение, возвращаемое вашим методом, будет сериализовано.Если ваш метод возвращает значение undefined, то элемент будет исключен из сериализации.
Если параметр replacer является массивом, то он будет использоваться для выбора элементов, подлежащих сериализации.Он фильтрует результаты так, что только члены с ключами, перечисленными в массиве replacer, являются строковыми.
Значения, которые не имеют представлений JSON, такие как undefined или functions, не будут сериализованы.Такие значения в объектах будут отброшены;в массивах они будут заменены на нуль.Вы можете использовать функцию замены, чтобы заменить их значениями JSON.JSON.stringify (undefined) возвращает неопределенное значение.
Необязательный параметр space производит строковое значение, которое заполняется разрывами строк и отступами, чтобы его было легче читать.
Если параметр spaceявляется непустой строкой, тогда эта строка будет использоваться для отступа.Если параметр space является числом, то отступ будет таким количеством пробелов.
var alias = {"Clark":"","phone":""};
function kryptonite(key)
{
var replacement = {};
for(var cursor in this)
{
if(cursor in alias)
replacement[cursor] = this[cursor]
}
return replacement;
}
var contact = {
"Clark":"Kent",
"Kal El":"Superman",
"phone":"555-7777"
}
contact.toJSON = kryptonite;
var foo = JSON.stringify(contact) // "{"Clark":"Kent","phone":"555-7777"}"
Ссылки