Разница между JSON.stringify и JSON.parse
Я был смущен, когда использовать эти два метода синтаксического анализа.
После того, как я повторю данные json_encoded и возвращаю их обратно через ajax, я часто сталкиваюсь с путаницей о том, когда я должен использовать JSON.stringify и JSON.parse.
Я получаю [object,object]
в моем console.log при разборе и объекте JavaScript при стригировании.
$.ajax({
url: "demo_test.txt",
success: function(data) {
console.log(JSON.stringify(data))
/* OR */
console.log(JSON.parse(data))
//this is what I am unsure about?
}
});
Ответы
Ответ 1
JSON.stringify
превращает объект JavaScript в текст JSON и сохраняет этот текст JSON в строке, например:
var my_object = { key_1: "some text", key_2: true, key_3: 5 };
var object_as_string = JSON.stringify(my_object);
// "{"key_1":"some text","key_2":true,"key_3":5}"
typeof(object_as_string);
// "string"
JSON.parse
превращает строку текста JSON в объект JavaScript, например:
var object_as_string_as_object = JSON.parse(object_as_string);
// {key_1: "some text", key_2: true, key_3: 5}
typeof(object_as_string_as_object);
// "object"
Ответ 2
JSON.parse()
предназначен для "разбора" чего-то, что было получено как JSON.
JSON.stringify()
- создать строку JSON из объекта/массива.
Ответ 3
Они являются взаимно противоположными. JSON.stringify()
сериализует объект JS в строку JSON, тогда как JSON.parse()
десериализует строку JSON в объект JS.
Ответ 4
Они являются противоположностями друг друга.
JSON.stringify()
JSON.stringify() сериализует объект JS в строку JSON.
JSON.stringify({}); // '{}'
JSON.stringify(true); // 'true'
JSON.stringify('foo'); // '"foo"'
JSON.stringify([1, 'false', false]); // '[1,"false",false]'
JSON.stringify({ x: 5 }); // '{"x":5}'
JSON.stringify(new Date(2006, 0, 2, 15, 4, 5))
// '"2006-01-02T15:04:05.000Z"'
JSON.stringify({ x: 5, y: 6 });
// '{"x":5,"y":6}' or '{"y":6,"x":5}'
JSON.stringify([new Number(1), new String('false'), new Boolean(false)]);
// '[1,"false",false]'
JSON.parse()
Метод JSON.parse() анализирует строку как JSON, необязательно преобразуя полученное значение.
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null
Ответ 5
Во-первых, функция JSON.stringify()
преобразует значение JavaScript в строку JavaScript Object Notation (JSON). Функция JSON.parse()
преобразует строку объекта JavaScript Object Notation (JSON) в объект. Для получения дополнительной информации об этих двух функциях см. Следующие ссылки.
https://msdn.microsoft.com/library/cc836459(v=vs.94).aspx
https://msdn.microsoft.com/library/cc836466(v=vs.94).aspx
Во-вторых, следующий пример поможет вам понять эти две функции.
<form id="form1" runat="server">
<div>
<div id="result"></div>
</div>
</form>
<script>
$(function () {
//define a json object
var employee = { "name": "John Johnson", "street": "Oslo West 16", "phone": "555 1234567" };
//use JSON.stringify to convert it to json string
var jsonstring = JSON.stringify(employee);
$("#result").append('<p>json string: ' + jsonstring + '</p>');
//convert json string to json object using JSON.parse function
var jsonobject = JSON.parse(jsonstring);
var info = '<ul><li>Name:' + jsonobject.name + '</li><li>Street:' + jsonobject.street + '</li><li>Phone:' + jsonobject.phone + '</li></ul>';
$("#result").append('<p>json object:</p>');
$("#result").append(info);
});
</script>
Ответ 6
var log = { "page": window.location.href,
"item": "item",
"action": "action" };
log = JSON.stringify(log);
console.log(log);
console.log(JSON.parse(log));
//Вывод будет:
//Для 1-й консоли есть строка типа:
'{ "page": window.location.href,"item": "item","action": "action" }'
//Для 2-й консоли это объект типа:
Object {
page : window.location.href,
item : "item",
action : "action" }
Ответ 7
JSON.stringify()
Преобразует объект в строку.
JSON.parse()
Преобразует строку JSON в объект.
Ответ 8
Реальная путаница здесь заключается не в синтаксическом анализе, а в отношении типа данных параметра data
обратного вызова успеха.
data
может быть либо сырым ответом, то есть строкой, либо может быть объектом JavaScript в соответствии с документацией:
успех
Тип: Функция (все данные, String textStatus, jqXHR jqXHR) A функция, вызываемая при успешном выполнении запроса. Функция получает прошло три аргумента: данные, возвращенные с сервера, отформатированы в соответствии с параметром dataType или обратным вызовом dataFilter функция, если указано, <.. >
И по умолчанию в типе dataType устанавливается значение "интеллектуальная догадка"
dataType (по умолчанию: Intelligent Guess (xml, json, script или html))
Тип: String Тип данных, которые вы ожидаете от сервер. Если ни один не указан, jQuery будет попытаться сделать вывод на основе Тип ответа MIME (тип XML MIME даст XML в 1.4 JSON даст объект JavaScript, в 1.4 script выполнит script, и все остальное будет возвращено в виде строки).
Ответ 9
Объект JavaScript ↔ Строка JSON
JSON.stringify() <-> JSON.parse()
JSON.stringify(obj) - принимает любой сериализуемый объект и возвращает представление JSON в виде строки.
JSON.stringify() -> Object To String.
JSON.parse(string) - создает хорошо сформированную строку JSON и возвращает соответствующий объект JavaScript.
JSON.parse() -> String To Object.
Объяснение: JSON.stringify(obj [, replacer [, space]]);
Replacer/Space - необязательно или принимает целочисленное значение, или вы можете вызвать функцию возврата типа интергеля.
function replacer(key, value) {
if (typeof value === 'number' && !isFinite(value)) {
return String(value);
}
return value;
}
- Replacer Just Use для замены не конечного значения no с нулевым значением.
- Использование пространства для отступов Json String пробелом
Ответ 10
Они полностью противоположны друг другу.
JSON.parse()
используется для анализа данных, которые были получены как JSON; он десериализует строку JSON в JavaScript-объект.
JSON.stringify()
, с другой стороны, используется для создания строки JSON из объекта или массива; он сериализует объект JavaScript в строку JSON.
Ответ 11
Я не знаю, было ли упомянуто, но одно из применений JSON.parse(JSON.stringify(myObject)) заключается в создании клона исходного объекта.
Это удобно, если вы хотите испортить некоторые данные, не затрагивая оригинальный объект. Вероятно, это не самый чистый/быстрый способ, но, безусловно, самый простой для объектов, которые не являются массово сложными.
Ответ 12
JSON.stringify(obj [, replacer [, space]])
- принимает любой сериализуемый объект и возвращает представление JSON в виде строки.
JSON.parse(string)
- принимает хорошо сформированную строку JSON и возвращает соответствующий объект JavaScript.
Ответ 13
Они противостоят друг другу.
JSON.Stringify()
преобразует JSON в строку и JSON.Parse()
анализирует строку в JSON.
Ответ 14
JSON: Он в основном используется для обмена данными с сервером. Перед отправкой объекта JSON на сервер он должен быть строкой.
JSON.stringify() //Converts the JSON object into the string representation.
var jsonData={"Name":"ABC","Dept":"Software"};// It is a JSON object
var jsonString=JSON.stringify(jsonData);// It is a string representation of the object
// jsonString === '{"Name":"ABC","Dept":"Software"}'; is true
Он также преобразует массив Javascript в строку
var arrayObject=["ABC","Software"];// It is array object
var arrString=JSON.stringify(array);// It is string representation of the array (object)
// arrString === '["ABC","Software"]'; is true
Когда мы получили данные JSON с сервера, данные были бы в формате строки. Поэтому мы конвертируем строку в объект JSON.
JSON.parse() //To convert the string into JSON object.
var data='{ "name":"ABC", "Dept":"Software"}'// it is a string (even though it looks like an object)
var JsonData= JSON.parse(data);// It is a JSON Object representation of the string.
// JsonData === { "name":"ABC", "Dept":"Software"}; is true
Ответ 15
JSON.parse() принимает строку JSON и преобразует ее в объект JavaScript.
JSON.stringify() принимает объект JavaScript и преобразует его в строку JSON.
const myObj = {
name: 'bipon',
age: 25,
favoriteFood: 'fish curry'
};
const myObjStr = JSON.stringify(myObj);
console.log(myObjStr);
// "{"name":"bipon","age":26,"favoriteFood":"fish curry"}"
console.log(JSON.parse(myObjStr));
// Object {name:"bipon",age:26,favoriteFood:"fish curry"}
И хотя методы обычно используются на объектах, они также могут использоваться на массивах: const myArr = ['simon', 'gomez', 'john'];
const myArrStr = JSON.stringify(myArr);
console.log(myArrStr);
// "["simon","gomez","john"]"
console.log(JSON.parse(myArrStr));
// ["simon","gomez","john"]
Ответ 16
JSON.parse()
используется для преобразования String в Object.
JSON.stringify()
используется для преобразования объекта в строку.
Вы можете сослаться на это тоже...
<script type="text/javascript">
function ajax_get_json(){
var hr = new XMLHttpRequest();
hr.open("GET", "JSON/mylist.json", true);
hr.setRequestHeader("Content-type", "application/json",true);
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
/* var return_data = hr.responseText; */
var data=JSON.parse(hr.responseText);
var status=document.getElementById("status");
status.innerHTML = "";
/* status.innerHTML=data.u1.country; */
for(var obj in data)
{
status.innerHTML+=data[obj].uname+" is in "+data[obj].country+"<br/>";
}
}
}
hr.send(null);
status.innerHTML = "requesting...";
}
</script>
Ответ 17
JSON.stringify(напишите здесь имя переменной): объект javascript в json
текст.
JSON.parse(имя переменной): текст json в преобразование объекта javascript.