Мне было интересно, как я могу создать объект JSON (JS) и затем клонировать его.
Как создать и клонировать объект JSON?
Ответ 1
Как создать объект JSON в javascript/jquery?
Нет ничего похожего на объект JSON. JSON обозначает JavaScript Object Notation и в основном представляет собой строку, которая кодирует информацию, похожую на объектные литералы JavaScript.
Однако вы можете создать такую кодировку (которая приведет к строке) с помощью JSON.stringify(object)
, см. JSON в JavaScript. Вы также можете создать такую строку вручную, но она очень подвержена ошибкам, и я не рекомендую ее.
Как клонировать объект JSON в javascript/jquery?
Так как это просто строка:
var jsonString2 = jsonString;
Я больше не могу работать с массивами javascript
JSON - это формат для обмена данными, это не структура данных, которую вы можете использовать в приложении.
Возможно, вы хотите больше узнать о JSON, objects в JS и массивы в JS.
Ответ 2
Это то, что я делаю, и оно работает как шарм
if (typeof JSON.clone !== "function") {
JSON.clone = function(obj) {
return JSON.parse(JSON.stringify(obj));
};
}
Ответ 3
Просто сделай
var x = {} //some json object here
var y = JSON.parse(JSON.stringify(x)); //new json object here
Ответ 4
Как и ES6. Object.assign - хороший способ сделать это.
newjsonobj = Object.assign({}, jsonobj, {})
Элементы в первом аргументе мутируют существующий объект, а третий - изменения в возвращаемом новом объекте.
В ES7 предлагается использовать оператор спреда.
newjsonobj = {...jsonobj}
Ответ 5
Q1: Как создать объект JSON в javascript/jquery?
Создать объект Javascript очень просто:
var user = {}; // creates an empty user object
var user = {firstName:"John", lastName:"Doe"}; // creates a user by initializing
// its firstName and lastName properties.
После создания вы можете добавить дополнительные поля к вашему объекту, например user.age = 30;
.
Если у вас есть объект в виде строки JSON, вы можете преобразовать его в объект JSON, используя встроенную функцию JSON.parse(yourJsonString)
или функцию jQuery $.parseJSON(yourJsonString)
.
Q2: Как мне клонировать объект JSON в javascript/jquery?
Мой способ клонировать объекты JSON - это функция расширения jQuery. Например, вы можете сгенерировать клон вашего пользовательского объекта, как показано ниже:
var cloneUser = $.extend(true, {}, {firstName:"John", lastName:"Doe"});
Первый параметр указывает, будет ли объект-клон мелкой или глубокой копией оригинала (см. Объектную копию в вики).
Чтобы увидеть другие альтернативы клонирования JSON, вы можете прочитать эту статью.
Ответ 6
Это проблема, которую я часто встречал при разборе JSON и повторном использовании кода в коде. И вы хотите избежать повторного парсинга каждый раз из исходной строки JSON или перехода serialize/parse
, который менее эффективен.
Итак, в тех случаях, когда вы хотите настроить анализируемый объект, но сохраняете исходный код неизменным, используйте следующую функцию на сервере (NodeJs) или на JavaScript-код клиента. Функция jQuery clone
менее эффективна, поскольку обрабатывает случаи для функций, regexp и т.д. В приведенной ниже функции рассматриваются только поддерживаемые JSON типы (null, undefined, число, строка, массив и объект):
function cloneJSON(obj) {
// basic type deep copy
if (obj === null || obj === undefined || typeof obj !== 'object') {
return obj
}
// array deep copy
if (obj instanceof Array) {
var cloneA = [];
for (var i = 0; i < obj.length; ++i) {
cloneA[i] = cloneJSON(obj[i]);
}
return cloneA;
}
// object deep copy
var cloneO = {};
for (var i in obj) {
cloneO[i] = cloneJSON(obj[i]);
}
return cloneO;
}
Ответ 7
Давай предположим, У нас есть JSONOBJECT EmailData, в котором есть некоторые данные. Теперь, если вам нужны те же данные в другом объекте (т.е. клонировать данные), вы можете сделать что-то вроде этого:
JSONOBJECT clone_EmailData=new JSONOBJECT(EmailData.toString());
Вышеуказанный оператор даст вам новый объект с теми же данными, и новый объект не является ссылкой на объект EmailData.