Является ли JSON строкой?

1

Мой вопрос, является ли JSON технически строкой? Я понимаю, что данные передаются через Интернет в текстовом формате. Итак, текстовый формат означает строку? У меня было интервью, в котором я проскользнул, что JSON - это, по сути, строка, и я буквально ее обидел. Текстовый формат не строковый? Мы всегда преобразуем объект в строку и отправляем как JSON, верно? Итак, разве это не сделает JSON строкой?

Я не смог найти четких ответов в Google о том, что JSON - это строка. Везде сказано, что это текстовый формат.

  • 0
    Вы получите лучшие знания по этой ссылке json.org
  • 2
    JSON.stringify возвращает строку JSON , но только «JSON» означает текстовый формат для представления данных. Вы также можете передавать данные в формате JSON или помещать их в файл, где я бы не назвал это «строкой».
Показать ещё 3 комментария
Теги:

4 ответа

7
Лучший ответ

Q: Является ли JSON строкой?

A: Нет. Это стандарт.

Однако мы передаем этот формат через закодированную или необработанную string по протоколу http, а затем используем API, такой как JSON.parse для создания этого представления обратно как парные объекты ключ-значение в памяти процесса.

0

JSON - это нотация (нотация объектов JavaScript)

Ответ Сэмюэля Тоха правильный, это стандарт (система обозначений/система) для сериализации/десериализации объектов в виде текста (строки, файлы, потоки и т.д.)

Стандарт ECMA-404 называет его "Синтаксис обмена данными", а не то, что делает кого-либо счастливее или мудрее.

Пример stringify и парсинга с типом info можно посмотреть здесь.

// Original Object
js_object = {name: "VisibleMan", age: 512, city: "City Of Light"};
console.log(typeof(js_object), js_object)

// Serialized to JSON
json_representation = JSON.stringify(js_object);
console.log(typeof(json_representation),json_representation)

// Recreated (deserialized) from JSON
recreated_js_obj = JSON.parse(json_representation);
console.log(typeof(recreated_js_obj), recreated_js_obj)
0

JSON не строка

Язык JSON, являющийся языком обмена данными между несколькими доменами, в основном является подмножеством YAML, что также является способом обмена данными между сторонами.

Обмен данными. Обмен данными - это процесс сбора данных, структурированных по исходной схеме, и преобразования их в данные, структурированные по целевой схеме, чтобы целевые данные представляли собой точное представление исходных данных. Определенно, для преобразования данных вам необходим анализатор, который позволяет определить, является ли схема данных правильной или нет для компьютерной программы.

0

Из контекста данных - JSON не является строкой. Он представляет данные в парах ключ-значение. Это следует своей собственной стратегии проверки. У него есть свой набор правил.

Если ваш контекст о том, как он передается по сети, HTTP обычно преобразует его в необработанную строку, как указано в @samuel-toh.

Даже в вашем коде (если вы используете, скажем, Javascript) вы можете преобразовать его в строку, вызвав:

JSON.stringify(yourJSONObject);

И может преобразовать его обратно в программируемый объект Javascript, вызвав:

JSON.parse(stringifiedJSON);

Итак, чтобы ответить на ваш вопрос:

Нет, JSON не является строкой. Это структура данных.

РЕДАКТИРОВАТЬ: Пожалуйста, не путайте между Javascript Object и JSON. Они разные. Методы, которые я указал выше, принимают Javascript Object в качестве параметра. В своем ответе я хочу сказать, что JSON - это независимый от языка формат обмена данными. (Это не мое утверждение, оно найдено здесь.)

Есть несколько различий в JSON и Javascript Object, как указывалось @t-niese, Javascript Objects могут иметь функции в качестве значений. И действительный объект Javascript может быть недопустимым JSON, хотя допустимый JSON будет допустимым объектом Javascript. Простите меня, если я создал путаницу.

  • 2
    JSON.stringify принимает объект JavaScript в качестве входных данных, а не объект JSON. В JavaScript нет ничего похожего на JSONObject, объект JavaScript может содержать функции в качестве значений, может иметь циклическую ссылку, определенные свойства ... и эти вещи нельзя представить в JSON.
  • 0
    Там нет "программируемый JSON". Вы говорите об объекте JavaScript. JSON - это текстовая сериализация этого. Вы не работаете с JSON, если у вас есть obj = {name: "Fred"} в JS. Который затем вернется назад и объяснит, почему «JSON Object» является неправильным. Вы говорите о текстовом сериализованном объекте данных ....? Это имеет меньший смысл, чем «ПИН-код», так как это просто тавтология, в то время как «объект JSON» - это две активно разные концепции, объединенные в одну. Это оксюморон
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню