Что такое JSON и зачем мне его использовать?

Я посмотрел википедию, погуглил ее и прочитал официальную документацию, но до сих пор не дошел до того, что я действительно понимаю, что такое JSON и почему я им пользуюсь.

Некоторое время я создавал приложения, используя PHP, MySQL и Javascript / HTML, и если JSON может что-то сделать, чтобы облегчить мою жизнь, улучшить мой код или улучшить пользовательский интерфейс, я бы хотел знать об этом. Может кто-нибудь дать мне краткое объяснение?

Комментарии к вопросу (4)
Решение

JSON (JavaScript Object Notation) - это легкий формат, который используется для обмена данными. Он основан на подмножестве языка JavaScript (спо, как объекты строятся в JavaScript). Как указано в MDN]1, некоторые JavaScript не являются JSON, а некоторые JSON не являются JavaScript.

Примером того, где это используется, являются ответы веб-служб. В «старые» дни веб-службы использовали XML в качестве основного формата данных для передачи обратных данных, но с момента появления JSON ( Формат JSON указан в RFC 4627 Дугласом Крокфордом ), он был предпочтительный формат, потому что он намного более легкий

Вы можете найти намного больше информации на официальном веб-сайте JSON.

JSON построен на двух структурах:

  • Коллекция пар имя / значение. На разных языках это реализуется как объект, запись, структура, словарь, хеш-таблица, список ключей или ассоциативный массив.
  • Заказанный список значений. В большинстве языков это реализуется как массив, вектор, список или последовательность.

JSON Структура

< br / > < br / >

< br / > < br / > < br / > < br / > < br / > < br / > < br / > < br / > < br / > < br / >

Вот пример данных JSON:

{
     "firstName": "John",
     "lastName": "Smith",
     "address": {
         "streetAddress": "21 2nd Street",
         "city": "New York",
         "state": "NY",
         "postalCode": 10021
     },
     "phoneNumbers": [
         "212 555-1234",
         "646 555-4567"
     ]
 }

JSON в JavaScript

JSON (в Javascript) - это строка!

Люди часто предполагают, что все объекты Javascript - это JSON, а JSON - это объект Javascript. Это неверно.

В Javascript var x = {x: y} is not JSON , это объект Javascript . Два не одно и то же. Эквивалент JSON (представленный на языке Javascript) будет var x = '{"x": "y"} '. x - это объект типа string , а не объект сам по себе. Чтобы превратить это в полноценный объект Javascript, вы должны сначала проанализировать его: var x = JSON.parse ('{"x": "y"} ');, x теперь объект, но это не JSON больше.

См. Объект Javascript Vs JSON


При работе с JSON и JavaScript у вас может возникнуть соблазн использовать функцию eval для оценки результата, возвращаемого в обратном вызове, но это не рекомендуется, поскольку в JSON допустимы два символа (U + 2028 и U + 2029). но не в JavaScript (подробнее об этом здесь).

Поэтому всегда нужно пытаться использовать сценарий Крокфорда, который проверяет действительный JSON, прежде чем оценивать его. Ссылка на объяснение скрипта найдена здесь, и вот прямая ссылка на файл js. Каждый крупный браузер в настоящее время имеет свою собственную реализацию для этого.

Пример использования анализатора JSON (с json из приведенного выше фрагмента кода):

//The callback function that will be executed once data is received from the server
var callback = function (result) {
    var johnny = JSON.parse(result);
    //Now, the variable 'johnny' is an object that contains all of the properties 
    //from the above code snippet (the json example)
    alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};

JSON parser также предлагает еще один очень полезный метод, stringify. Этот метод принимает объект JavaScript в качестве параметра и выводит строку в формате JSON. Это полезно для тех случаев, когда вы хотите отправить данные обратно на сервер:

var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}

Вышеупомянутые два метода (parse и stringify) также принимают второй параметр, который является функцией, которая будет вызываться для каждого ключа и значения на каждом уровне конечного результата, и каждое значение будет заменено результатом вашего входная функция. (Подробнее об этом здесь)

Кстати, для всех вас, кто думает, что JSON только для JavaScript, посмотрите этот пост, который объясняет и подтверждает обратное.


Ссылки

Комментарии (9)

Объясненная концепция - нет кода или технического жаргона

Что такое JSON? - Как я объяснил это своей жене TM < / sup >

Я: «Это в основном способ общения с кем-то в письменной форме....но с очень конкретными правилами.

Жена: да....?

Я: В прозаическом английском правила довольно свободны: как в клетке. Не так с JSON. Есть много способов описать что-то:

• Пример 1: в нашей семье 4 человека: ты, я и 2 детей.

• Пример 2: Наша семья: ты, я, ребенок1 и ребенок2.

• Пример 3: Семья: [ты, я, ребенок1, ребенок2]

• Пример 4: в нашей семье 4 человека: мама, папа, ребенок1 и ребенок2.

Wife: Почему бы им просто не использовать простой английский вместо этого?

Я: Они бы, но помните, что мы имеем дело с компьютерами. Компьютер глуп и не сможет понять предложения. Таким образом, мы должны быть очень конкретными, когда компьютеры задействованы, иначе они запутаются. Кроме того, JSON - довольно эффективный способ общения, поэтому большинство нерелевантных вещей вырезано, что является красивой рукой. Если вы хотите донести нашу семью до компьютера, вы можете сделать это одним из способов:

{
                "Family" :  ["Me", "Wife", "Kid1", "Kid2"] 
}

...... и это в основном JSON. Но помните, вы ДОЛЖНЫ подчиняться правилам грамматики JSON. Если вы нарушите эти правила, компьютер просто не поймет (т.е. анализировать) что ты пишешь.

Wife: Так как мне писать в Json?

Хорошим способом было бы использовать сериализатор Json - библиотеку, которая делает тяжелую работу для вас.

Резюме

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

Комментарии (0)

Короче говоря, JSON - это способ сериализации таким образом, что он становится кодом JavaScript. При выполнении (с оценкой или иным образом) этот код создает и возвращает объект JavaScript, который содержит данные, которые вы сериализовали. Это доступно, потому что JavaScript допускает следующий синтаксис:

var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
var MyObject = {
    'StringProperty' : 'Value',
    'IntProperty' : 12,
    'ArrayProperty' : [ 1, 2, 3],
    'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
}; // MyObject is now an object with property values set.

Вы можете использовать это для нескольких целей. С одной стороны, это удобный способ передачи данных с серверной части вашего сервера на ваш код JavaScript. Таким образом, это часто используется в AJAX .

Вы также можете использовать его в качестве автономного механизма сериализации, который проще и занимает меньше места, чем XML. Существует множество библиотек, которые позволяют сериализовать и десериализировать объекты в JSON для различных языков программирования.

Комментарии (0)

Короче говоря, это запись сценариев для передачи данных. В некотором смысле альтернатива XML, изначально поддерживающая базовые типы данных, массивы и ассоциативные массивы (пары name-value, называемые объектами, потому что это то, что они представляют).

Синтаксис используется в JavaScript, а сам JSON означает «объектная нотация JavaScript». Однако он стал портативным и используется и на других языках.

Полезная ссылка для деталей здесь:

http://secretgeek.net/json_3mins.asp

Комментарии (0)

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

Комментарии (0)

JSON - это примечание объекта JavaScript. Это гораздо более компактный способ передачи наборов данных по сетевым соединениям по сравнению с XML Я предлагаю использовать JSON в любых AJAX-подобных приложениях, где XML в противном случае был бы «рекомендуемым» вариантом. Глаголность XML увеличит время загрузки и увеличит потребление полосы пропускания ($$$). Вы можете достичь того же эффекта с JSON, и его наценка почти исключительно посвящена самим данным, а не базовой структуре.

Комментарии (0)

общий короткий ответ: если вы используете AJAX для запросов данных, вы можете легко отправлять и возвращать объекты в виде строк JSON. Доступные расширения для поддержки Javascript toJSON () вызывает все типы javascript для отправки данных на сервер в запросе AJAX. Ответы AJAX могут возвращать объекты в виде строк JSON, которые можно преобразовать в объекты Javascript с помощью простого вызова eval, например,. если функция AJAX возвращена некоторым AjaxFunctionCallReturningJson

"{ \"FirstName\" : \"Fred\", \"LastName\" : \"Flintstone\" }"

Вы можете написать в Javascript

var obj = eval("(" + someAjaxFunctionCallReturningJson().value + ")");
alert(obj.FirstName);
alert(obj.LastName);

JSON также можно использовать для полезных нагрузок веб-служб и др., Но это действительно удобно для результатов AJAX.

  • Обновление (десять лет спустя): не делайте этого, используйте JSON.parse
Комментарии (2)

Мне нравится JSON в основном потому, что это так кратко . Для веб-контента, который можно gzipped, это не обязательно имеет большое значение (следовательно, почему x html так популярен). Но бывают случаи, когда это может быть полезно.

Например, для одного проекта я передавал информацию, которую необходимо было сериализовать и передать через XMPP. Поскольку большинство серверов ограничат объем данных, которые вы можете передавать в одном сообщении, я счел полезным использовать JSON поверх очевидной альтернативы, XML

В качестве дополнительного бонуса, если вы знакомы с Python или Javascript, вы уже в значительной степени знаете JSON и можете интерпретировать его без особого обучения вообще.

Комментарии (0)

Что такое JSON?

JavaScript Object Notation (JSON) - это легкий формат обмена данными, вдохновленный литералами объектов JavaScript.

Значения JSON могут состоять из:

объекты (коллекции пар имя-значение) массивы (упорядоченные списки значений) строки (в двойных кавычках) числа правда, ложь или ноль

JSON не зависит от языка.

JSON с PHP?

После PHP версии 5.2.0 расширение JSON декодирует и кодирует функции по умолчанию.

Json_encode - возвращает представление значений JSON Json_decode - декодирует строку JSON Json_last_error - возвращает последнюю возникшую ошибку.

Синтаксис и правила JSON?

Синтаксис JSON получен из синтаксиса нотации объекта JavaScript:

Данные в парах имя / значение Данные разделены запятыми Кудрявые брекеты держат предметы Квадратные скобки удерживают массивы

Комментарии (0)

Мы должны сделать проект по колледжу, и мы столкнулись с очень большой проблемой, она называется политикой того же происхождения. Из-за других вещей ваш метод XMLHttpRequest от Javascript не может делать запросы на домены, отличные от домена, на котором находится ваш сайт.

Например, вы не можете сделать запрос на www.otherexample.com, если ваш сайт находится на www.example.com. JSONRequest позволяет это, но вы получите результат в формате JSON, если этот сайт это допустит (например, у него есть веб-служба, которая возвращает сообщения в JSON). Это одна из проблем, где вы могли бы использовать JSON, возможно.

Вот что практично: Yahoo JSON

Комментарии (0)

Разница между JSON и обычным синтаксисом будет следующей (в Javascript)

Обычный

 function Employee(name, Id, Phone, email){

      this.name = name;
      this.Id = Id;
      this.Phone = Phone;
      this.email = email;
  }

  //access or call it as 

var Emp = new Employee("mike","123","9373849784","mike.Anderson@office.com");

С JSON

если мы используем JSON, мы можем определить по-разному как

  function Employee(args){

   this.name = args.name;
   this.Id = args.Id;
   this.Phone = args.Phone;
   this.email = args.email;
}

//now access this as...

var Emp = new Employee({'name':'Mike', 'Id':'123', 'Phone':'23792747', 'email':'mike.adnersone@office.com'});

Важно помнить, что если нам нужно построить класс «Employee» или модальный с 100 элементами без метода JSON, мы должны проанализировать все при создании класса. Но с JSON мы можем определить объекты, встроенные, только когда определен новый объект для класса.

так что эта строка ниже - это способ делать что-то с JSON (просто простой способ определить вещи)

 var Emp = new Employee({'name':'Mike', 'Id':'123', 'Phone':'23792747', 'email':'mike.adnersone@office.com'});
Комментарии (1)

JSON (обозначение объекта Javascript) - это легкий формат данных для обмена / передачи данных. Это в паре ключевых значений, как JavaScript. Для REST API он широко используется для передачи данных с сервера на клиент. В настоящее время многие сайты социальных сетей используют это. Хотя я не считаю это надежным, как XML, в отношении типов данных. XML имеет очень богатые типы данных и XSD. JSON немного не хватает в этом.

Для того же количества строковых данных JSON будет легче сравнивать с XML, поскольку XML имеет все эти открывающие и закрывающие теги и т. Д...

Комментарии (0)

Это очень просто. JSON расшифровывается как Java Script Object Notation. Думайте об этом как об альтернативе использованию XML для передачи данных между программными компонентами.

Например, недавно я написал кучу веб-сервисов, которые вернули JSON, и некоторые разработчики Javascript затем написали код, который вызывал сервисы и использовал информацию, возвращаемую в этом формате.

Комментарии (0)

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

Мне нравится думать о JSON именно так, как он есть - язык в мире разных языков. Однако разница между JSON и другими языками заключается в том, что «все» «говорит» JSON вместе со своим «родным языком».«

Используя пример реального мира, давайте представим, что у нас три человека. Один человек говорит на игбо как на родном языке. Второй человек хотел бы общаться с первым человеком, однако первый человек говорит на йорубе как на своем родном языке.

Что мы можем сделать?

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

В мире программирования первым «человеком» является Python, вторым «человеком» является Ruby, а третьим «человеком» является JSON, который, как оказалось, способен «переводить» Ruby в Python и наоборот! Очевидно, что эта аналогия не идеальна, но, как человек, говорящий на двух языках, я считаю, что это простой способ взглянуть на то, как JSON взаимодействует с другими языками программирования.

Комментарии (0)

В контексте Java одна из причин, по которой JSON может захотеть использовать, заключается в том, что он предоставляет очень хорошую альтернативу структуре сериализации Java, которая, как было показано (исторически), подвержена некоторым довольно серьезным уязвимостям.

Джошуа Блох подробно обсуждает это в пункте 85 «Предпочитание альтернатив сериализации Java» (Effective Java 3rd Edition)

Первоначально сериализация Java предназначалась для перевода структур данных в формат, который можно было легко передавать или хранить. JSON отвечает этому требованию без серьезных подвигов, упомянутых выше.

Комментарии (0)

Попробуйте следующий код, чтобы проанализировать ваш ответ php json: read.php

</script>
<script type="text/javascript">  
$.ajax({
    url:'index.php',
    data:{},
    type:"POST",
    success:function(result) {
        jsondecoded = $.parseJSON(result);
        $.each(jsondecoded, function(index, value) {
            $("#servers").text($("#servers").text() + " " + value.servername);
            console.log(value.start);
            console.log(value.end);
            console.log(value.id);
        });
    },
    statusCode: {
    404: function() {
      alert( "page not found" );
    }
  }
});
</script>

server.php

<?php 
echo '[{"start":"2017-08-29","end":"2017-09-01","id":"22"},{"start":"2017-09-03","end":"2017-09-06","id":"23"}]';
?>
Комментарии (1)