В чем разница между JSON и JavaScript объектом? [дубликат]
этот вопрос уже есть ответ здесь:
Я новичок в объектах JSON и JavaScript.
- может кто-нибудь объяснить различия между JSON и JavaScript объектом?
- какова их польза?
- - один лучше другого? Или это зависит от ситуации?
- когда использовать, какой, в какой ситуации?
- почему был создан JSON в первую очередь? Какова была его основная цель?
- может ли кто-нибудь привести примеры, когда следует использовать JSON, а не объект JavaScript и наоборот?
3 ответов:
сначала вы должны знать, что такое JSON:
- это язык агностик формат обмена данными.
синтаксис JSON был вдохновлен буквенной нотацией объекта JavaScript, но между ними есть различия.
например, в JSON all ключи должно быть заключено в кавычки, в то время как в объектных литералах это не обязательно:
// JSON: { "foo": "bar" } // Object literal: var o = { foo: "bar" };кавычки обязательны для JSON, потому что в JavaScript (точнее в ECMAScript 3rd. Издание), использование зарезервированные слова поскольку имена свойств запрещены, например:
var o = { if: "foo" }; // SyntaxError in ES3в то время как использование строкового литерала в качестве имени свойства (цитирование имени свойства) не дает никаких проблем:
var o = { "if": "foo" };и "совместимость" (и легко eval'ING может быть?) котировки являются обязательными.
типы данных в JSON также ограничены следующим значения:
stringnumberobjectarray- литерал а:
truefalsenullграмматика
Stringsизменения. Они обязательно быть заключено в двойные кавычки, в то время как в JavaScript, вы можете использовать одинарные или двойные кавычки попеременно.// Invalid JSON: { "foo": 'bar' }принятая грамматика JSON
Numbersтакже изменения, в JavaScript вы можете использовать шестнадцатеричные литералы, например0xFF, или (печально известные) Восьмеричные литералы, например010. В JSON можно использовать только десятичные литералы.// Invalid JSON: { "foo": 0xFF }есть некоторые багги реализации (Firefox 3.5+, IE8+, json2.js) где восьмеричные литералы неправильно разрешены, например
JSON.parse('01')должен производитьSyntaxError.
JSON-это строковое представление объекта. Это совместимый формат сериализации. Он не привязан только к JavaScript. Например, существуют сериализаторы JSON для .NET, позволяющие сериализовать / десериализовать объекты .NET.
Так что это просто формат, позволяющий конвертировать из объектов в строку и обратно, что удобно, если вы хотите передать их по проводу.
это очень близко к представлению объекта javascript, и если вы просто
eval()a Строка JSON вы получите соответствующий объект.
JSON-это формат обмена данными, который просто выглядит как подмножество кода YAML или JavaScript, который вы можете выполнить и вернуть объект. Объект JavaScript-это просто объект в JavaScript.
с JSON, являющимся форматом обмена данными, вы можете обмениваться структурированными данными в текстовой форме с ним. К настоящему времени он довольно отделен от JavaScript. Объект JavaScript позволяет создавать и работать со структурированными данными во время выполнения программы на JavaScript.
Comments