JSON - Краткое руководство
JSON или JavaScript Object Notation - это облегченный текстовый открытый стандарт, разработанный для удобочитаемого обмена данными. Соглашения, используемые JSON, известны программистам, включая C, C ++, Java, Python, Perl и т. Д.
JSON расшифровывается как JavaScript Object Notation.
Формат был указан Дугласом Крокфордом.
Он был разработан для обмена удобочитаемыми данными.
Он был расширен из языка сценариев JavaScript.
Расширение имени файла .json.
Тип Интернет-носителя JSON: application/json.
Единый идентификатор типа - public.json.
Использование JSON
Он используется при написании приложений на основе JavaScript, которые включают расширения браузера и веб-сайты.
Формат JSON используется для сериализации и передачи структурированных данных через сетевое соединение.
В основном он используется для передачи данных между сервером и веб-приложениями.
Веб-службы и API используют формат JSON для предоставления общедоступных данных.
Его можно использовать с современными языками программирования.
Характеристики JSON
- JSON легко читать и писать.
- Это легкий текстовый формат обмена.
- JSON не зависит от языка.
Простой пример в JSON
В следующем примере показано, как использовать JSON для хранения информации, связанной с книгами, в зависимости от их темы и выпуска.
{
"book": [
{
"id":"01",
"language": "Java",
"edition": "third",
"author": "Herbert Schildt"
},
{
"id":"07",
"language": "C++",
"edition": "second",
"author": "E.Balagurusamy"
}
]
}
Разобравшись с приведенной выше программой, мы попробуем другой пример. Сохраним приведенный ниже код какjson.htm -
<html>
<head>
<title>JSON example</title>
<script language = "javascript" >
var object1 = { "language" : "Java", "author" : "herbert schildt" };
document.write("<h1>JSON with JavaScript example</h1>");
document.write("<br>");
document.write("<h3>Language = " + object1.language+"</h3>");
document.write("<h3>Author = " + object1.author+"</h3>");
var object2 = { "language" : "C++", "author" : "E-Balagurusamy" };
document.write("<br>");
document.write("<h3>Language = " + object2.language+"</h3>");
document.write("<h3>Author = " + object2.author+"</h3>");
document.write("<hr />");
document.write(object2.language + " programming language can be studied " + "from book written by " + object2.author);
document.write("<hr />");
</script>
</head>
<body>
</body>
</html>
Теперь давайте попробуем открыть json.htm с помощью IE или любого другого браузера с поддержкой javascript, который дает следующий результат:
Вы можете обратиться к главе Объекты JSON для получения дополнительной информации об объектах JSON.
Давайте кратко рассмотрим основной синтаксис JSON. Синтаксис JSON в основном рассматривается как подмножество синтаксиса JavaScript; он включает в себя следующее -
Данные представлены парами имя / значение.
Фигурные скобки содержат объекты, за каждым именем следует ':' (двоеточие), пары имя / значение разделяются (запятая).
Квадратные скобки содержат массивы, а значения разделяются запятой.
Ниже простой пример -
{
"book": [
{
"id": "01",
"language": "Java",
"edition": "third",
"author": "Herbert Schildt"
},
{
"id": "07",
"language": "C++",
"edition": "second",
"author": "E.Balagurusamy"
}
]
}
JSON поддерживает следующие две структуры данных -
Collection of name/value pairs - Эта структура данных поддерживается разными языками программирования.
Ordered list of values - Он включает в себя массив, список, вектор или последовательность и т. Д.
Формат JSON поддерживает следующие типы данных -
Sr.No. | Тип и описание |
---|---|
1 | Number формат с плавающей запятой двойной точности в JavaScript |
2 | String Unicode в двойных кавычках с экранированием обратной косой черты |
3 | Boolean правда или ложь |
4 | Array упорядоченная последовательность значений |
5 | Value это может быть строка, число, истина или ложь, ноль и т. д. |
6 | Object неупорядоченный набор пар ключ: значение |
7 | Whitespace можно использовать между любой парой токенов |
8 | null пустой |
номер
Это формат с плавающей запятой двойной точности в JavaScript, который зависит от реализации.
Восьмеричный и шестнадцатеричный форматы не используются.
В Number не используются NaN или Infinity.
В следующей таблице показаны типы чисел -
Sr.No. | Тип и описание |
---|---|
1 | Integer Цифры 1-9, 0 и положительные или отрицательные |
2 | Fraction Дроби типа .3, .9 |
3 | Exponent Показатель как e, e +, e-, E, E +, E- |
Синтаксис
var json-object-name = { string : number_value, .......}
пример
Пример, показывающий Number Datatype, значение не должно указываться -
var obj = {marks: 97}
Строка
Это последовательность из нуля или более символов Unicode в двойных кавычках с экранированием обратной косой черты.
Символ - это односимвольная строка, т.е. строка длиной 1.
В таблице показаны различные специальные символы, которые вы можете использовать в строках документа JSON.
Sr.No. | Тип и описание |
---|---|
1 | " двойная цитата |
2 | \ обратная косая черта |
3 | / косая черта |
4 | b Backspace |
5 | f подача формы |
6 | n новая линия |
7 | r возврат каретки |
8 | t горизонтальная вкладка |
9 | u четыре шестнадцатеричных цифры |
Синтаксис
var json-object-name = { string : "string value", .......}
пример
Пример, показывающий String Datatype -
var obj = {name: 'Amit'}
Булево
Он включает в себя истинные или ложные значения.
Синтаксис
var json-object-name = { string : true/false, .......}
пример
var obj = {name: 'Amit', marks: 97, distinction: true}
Массив
Это упорядоченный набор значений.
Они заключены в квадратные скобки, что означает, что массив начинается с. [. и заканчивается на.] ..
Значения разделены (запятой).
Индексирование массива может быть начато с 0 или 1.
Если имена ключей являются последовательными целыми числами, следует использовать массивы.
Синтаксис
[ value, .......]
пример
Пример, показывающий массив, содержащий несколько объектов -
{
"books": [
{ "language":"Java" , "edition":"second" },
{ "language":"C++" , "lastName":"fifth" },
{ "language":"C" , "lastName":"third" }
]
}
Объект
Это неупорядоченный набор пар имя / значение.
Объекты заключаются в фигурные скобки, то есть начинается с '{' и заканчивается '}'.
За каждым именем следует ':' (двоеточие), а пары ключ / значение разделяются (запятая).
Ключи должны быть строками и отличаться друг от друга.
Объекты следует использовать, когда имена ключей являются произвольными строками.
Синтаксис
{ string : value, .......}
пример
Пример, показывающий объект -
{
"id": "011A",
"language": "JAVA",
"price": 500,
}
Пробел
Его можно вставить между любой парой токенов. Его можно добавить, чтобы сделать код более читабельным. Пример показывает объявление с пробелом и без него -
Синтаксис
{string:" ",....}
пример
var obj1 = {"name": "Sachin Tendulkar"}
var obj2 = {"name": "SauravGanguly"}
ноль
Это означает пустой тип.
Синтаксис
null
пример
var i = null;
if(i == 1) {
document.write("<h1>value is 1</h1>");
} else {
document.write("<h1>value is null</h1>");
}
Значение JSON
Он включает -
- число (целое или с плавающей запятой)
- string
- boolean
- array
- object
- null
Синтаксис
String | Number | Object | Array | TRUE | FALSE | NULL
пример
var i = 1;
var j = "sachin";
var k = null;
Создание простых объектов
Объекты JSON можно создавать с помощью JavaScript. Давайте посмотрим на различные способы создания объектов JSON с использованием JavaScript -
- Создание пустого объекта -
var JSONObj = {};
- Создание нового объекта -
var JSONObj = new Object();
Создание объекта с атрибутом bookname со значением в строке, атрибут priceс числовым значением. Доступ к атрибуту осуществляется с помощью '.' Оператор -
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };
Это пример, который показывает создание объекта в javascript с использованием JSON, сохраните приведенный ниже код как json_object.htm -
<html>
<head>
<title>Creating Object JSON with JavaScript</title>
<script language = "javascript" >
var JSONObj = { "name" : "tutorialspoint.com", "year" : 2005 };
document.write("<h1>JSON with JavaScript example</h1>");
document.write("<br>");
document.write("<h3>Website Name = "+JSONObj.name+"</h3>");
document.write("<h3>Year = "+JSONObj.year+"</h3>");
</script>
</head>
<body>
</body>
</html>
Теперь попробуем открыть Json Object с помощью IE или любого другого браузера с поддержкой javaScript. Это дает следующий результат -
Создание объектов массива
В следующем примере показано создание объекта массива в javascript с использованием JSON, сохраните приведенный ниже код как json_array_object.htm -
<html>
<head>
<title>Creation of array object in javascript using JSON</title>
<script language = "javascript" >
document.writeln("<h2>JSON array object</h2>");
var books = { "Pascal" : [
{ "Name" : "Pascal Made Simple", "price" : 700 },
{ "Name" : "Guide to Pascal", "price" : 400 }],
"Scala" : [
{ "Name" : "Scala for the Impatient", "price" : 1000 },
{ "Name" : "Scala in Depth", "price" : 1300 }]
}
var i = 0
document.writeln("<table border = '2'><tr>");
for(i = 0;i<books.Pascal.length;i++) {
document.writeln("<td>");
document.writeln("<table border = '1' width = 100 >");
document.writeln("<tr><td><b>Name</b></td><td width = 50>" + books.Pascal[i].Name+"</td></tr>");
document.writeln("<tr><td><b>Price</b></td><td width = 50>" + books.Pascal[i].price +"</td></tr>");
document.writeln("</table>");
document.writeln("</td>");
}
for(i = 0;i<books.Scala.length;i++) {
document.writeln("<td>");
document.writeln("<table border = '1' width = 100 >");
document.writeln("<tr><td><b>Name</b></td><td width = 50>" + books.Scala[i].Name+"</td></tr>");
document.writeln("<tr><td><b>Price</b></td><td width = 50>" + books.Scala[i].price+"</td></tr>");
document.writeln("</table>");
document.writeln("</td>");
}
document.writeln("</tr></table>");
</script>
</head>
<body>
</body>
</html>
Теперь попробуем открыть объект массива Json с помощью IE или любого другого браузера с поддержкой javaScript. Это дает следующий результат -
Схема JSON - это спецификация формата на основе JSON для определения структуры данных JSON. Он был написан в рамках проекта IETF, срок действия которого истек в 2011 году. Схема JSON -
- Описывает ваш существующий формат данных.
- Четкая, понятная человеку и машиночитаемая документация.
- Полная структурная проверка, полезная для автоматизированного тестирования.
- Полная структурная проверка, проверка данных, отправленных клиентом.
Библиотеки проверки схемы JSON
В настоящее время доступно несколько валидаторов для разных языков программирования. В настоящее время наиболее полным и совместимым валидатором схемы JSON является JSV.
Языки | Библиотеки |
---|---|
C | WJElement (LGPLv3) |
Ява | валидатор схемы-json (LGPLv3) |
.СЕТЬ | Json.NET (Массачусетский технологический институт) |
ActionScript 3 | Frigga (Массачусетский технологический институт) |
Haskell | aeson-schema (MIT) |
Python | Jsonschema |
Рубин | автопарсинг (ASL 2.0); ruby-jsonschema (Массачусетский технологический институт) |
PHP | php-json-schema (MIT). json-schema (Беркли) |
JavaScript | Обычный (BSD); JSV; json-schema; Matic (Массачусетский технологический институт); Додзё; Persevere (модифицированный BSD или AFL 2.0); schema.js. |
Пример схемы JSON
Ниже приведена базовая схема JSON, которая охватывает классическое описание каталога продуктов.
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "integer"
},
"name": {
"description": "Name of the product",
"type": "string"
},
"price": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": true
}
},
"required": ["id", "name", "price"]
}
Давайте проверим различные важные ключевые слова, которые можно использовать в этой схеме -
Sr.No. | Ключевое слово и описание |
---|---|
1 | $schema Ключевое слово $ schema указывает, что эта схема написана в соответствии с черновиком спецификации v4. |
2 | title Вы будете использовать это, чтобы дать название своей схеме. |
3 | description Небольшое описание схемы. |
4 | type Ключевое слово type определяет первое ограничение для наших данных JSON: это должен быть объект JSON. |
5 | properties Определяет различные ключи и их типы значений, минимальные и максимальные значения, которые будут использоваться в файле JSON. |
6 | required Здесь хранится список необходимых свойств. |
7 | minimum Это ограничение на значение, которое представляет собой минимально допустимое значение. |
8 | exclusiveMinimum Если "exclusiveMinimum" присутствует и имеет логическое значение "истина", экземпляр действителен, если он строго больше, чем значение "минимум". |
9 | maximum Это ограничение на значение, которое представляет собой максимально допустимое значение. |
10 | exclusiveMaximum Если "exclusiveMaximum" присутствует и имеет логическое значение "истина", экземпляр действителен, если он строго ниже значения "максимум". |
11 | multipleOf Числовой экземпляр действителен для "multipleOf", если результат деления экземпляра на значение этого ключевого слова является целым числом. |
12 | maxLength Длина экземпляра строки определяется как максимальное количество его символов. |
13 | minLength Длина экземпляра строки определяется как минимальное количество его символов. |
14 | pattern Экземпляр строки считается действительным, если регулярное выражение успешно соответствует экземпляру. |
Вы можете проверить http://json-schema.orgдля получения полного списка ключевых слов, которые можно использовать при определении схемы JSON. Вышеупомянутая схема может использоваться для проверки действительности следующего кода JSON -
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]
JSON и XML являются удобочитаемыми форматами и не зависят от языка. Оба они поддерживают создание, чтение и декодирование в реальных ситуациях. Мы можем сравнить JSON с XML на основе следующих факторов:
Подробный
XML более подробный, чем JSON, поэтому программистам проще писать JSON.
Использование массивов
XML используется для описания структурированных данных, которые не включают массивы, тогда как JSON включает массивы.
Парсинг
Метод JavaScript eval анализирует JSON. При применении к JSON eval возвращает описанный объект.
пример
Отдельные примеры XML и JSON -
JSON
{
"company": Volkswagen,
"name": "Vento",
"price": 800000
}
XML
<car>
<company>Volkswagen</company>
<name>Vento</name>
<price>800000</price>
</car>
В этой главе рассказывается, как кодировать и декодировать объекты JSON с помощью языка программирования PHP. Начнем с подготовки среды для начала программирования на PHP для JSON.
Окружающая обстановка
Начиная с PHP 5.2.0, расширение JSON по умолчанию входит в комплект и компилируется в PHP.
Функции JSON
Функция | Библиотеки |
---|---|
json_encode | Возвращает JSON-представление значения. |
json_decode | Расшифровывает строку JSON. |
json_last_error | Возвращает последнюю произошедшую ошибку. |
Кодирование JSON в PHP (json_encode)
Функция PHP json_encode () используется для кодирования JSON в PHP. Эта функция возвращает JSON-представление значения в случае успеха или FALSE в случае неудачи.
Синтаксис
string json_encode ( $value [, $options = 0 ] )
Параметры
value- Кодируемое значение. Эта функция работает только с данными в кодировке UTF-8.
options - Это необязательное значение представляет собой битовую маску, состоящую из JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT.
пример
В следующем примере показано, как преобразовать массив в JSON с помощью PHP.
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
При выполнении это даст следующий результат -
{"a":1,"b":2,"c":3,"d":4,"e":5}
В следующем примере показано, как объекты PHP могут быть преобразованы в JSON.
<?php
class Emp {
public $name = "";
public $hobbies = ""; public $birthdate = "";
}
$e = new Emp(); $e->name = "sachin";
$e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p");
$e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e);
?>
При выполнении это даст следующий результат -
{"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}
Расшифровка JSON в PHP (json_decode)
Функция PHP json_decode () используется для декодирования JSON в PHP. Эта функция возвращает значение, декодированное из json в соответствующий тип PHP.
Синтаксис
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
Paramaters
json_string - Это закодированная строка, которая должна быть данными в кодировке UTF-8.
assoc - Это параметр логического типа, при значении TRUE возвращаемые объекты будут преобразованы в ассоциативные массивы.
depth - Параметр целочисленного типа, определяющий глубину рекурсии.
options - Это битовая маска целочисленного типа декодирования JSON, поддерживается JSON_BIGINT_AS_STRING.
пример
В следующем примере показано, как можно использовать PHP для декодирования объектов JSON.
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
Во время выполнения он даст следующий результат -
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
В этой главе рассказывается, как кодировать и декодировать объекты JSON с помощью языка программирования Perl. Начнем с подготовки среды для программирования на Perl для JSON.
Окружающая обстановка
Прежде чем вы начнете кодировать и декодировать JSON с помощью Perl, вам необходимо установить модуль JSON, который можно получить из CPAN. После того, как вы загрузили JSON-2.53.tar.gz или любую другую последнюю версию, выполните действия, указанные ниже:
$tar xvfz JSON-2.53.tar.gz
$cd JSON-2.53 $perl Makefile.PL
$make $make install
Функции JSON
Функция | Библиотеки |
---|---|
encode_json | Преобразует заданную структуру данных Perl в двоичную строку в кодировке UTF-8. |
decode_json | Расшифровывает строку JSON. |
to_json | Преобразует заданную структуру данных Perl в строку json. |
from_json | Ожидает строку json и пытается ее проанализировать, возвращая полученную ссылку. |
convert_blessed | Используйте эту функцию с истинным значением, чтобы Perl мог использовать метод TO_JSON в классе объекта для преобразования объекта в JSON. |
Кодирование JSON в Perl (encode_json)
Функция Perl encode_json () преобразует заданную структуру данных Perl в двоичную строку в кодировке UTF-8.
Синтаксис
$json_text = encode_json ($perl_scalar );
or
$json_text = JSON->new->utf8->encode($perl_scalar);
пример
В следующем примере показаны массивы под JSON с Perl -
#!/usr/bin/perl
use JSON;
my %rec_hash = ('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
my $json = encode_json \%rec_hash; print "$json\n";
При выполнении это даст следующий результат -
{"e":5,"c":3,"a":1,"b":2,"d":4}
В следующем примере показано, как объекты Perl могут быть преобразованы в JSON.
#!/usr/bin/perl
package Emp;
sub new {
my $class = shift; my $self = {
name => shift,
hobbies => shift,
birthdate => shift,
};
bless $self, $class;
return $self; } sub TO_JSON { return { %{ shift() } }; } package main; use JSON; my $JSON = JSON->new->utf8;
$JSON->convert_blessed(1); $e = new Emp( "sachin", "sports", "8/5/1974 12:20:03 pm");
$json = $JSON->encode($e); print "$json\n";
При выполнении он даст следующий результат -
{"birthdate":"8/5/1974 12:20:03 pm","name":"sachin","hobbies":"sports"}
Расшифровка JSON в Perl (decode_json)
Функция Perl decode_json () используется для декодирования JSON в Perl. Эта функция возвращает значение, декодированное из json, в соответствующий тип Perl.
Синтаксис
$perl_scalar = decode_json $json_text
or
$perl_scalar = JSON->new->utf8->decode($json_text)
пример
В следующем примере показано, как Perl можно использовать для декодирования объектов JSON. Здесь вам нужно будет установить модуль Data :: Dumper, если он еще не установлен на вашем компьютере.
#!/usr/bin/perl
use JSON;
use Data::Dumper;
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; $text = decode_json($json); print Dumper($text);
При выполнении он даст следующий результат -
$VAR1 = {
'e' => 5,
'c' => 3,
'a' => 1,
'b' => 2,
'd' => 4
};
В этой главе рассказывается, как кодировать и декодировать объекты JSON с помощью языка программирования Python. Начнем с подготовки среды для программирования Python для JSON.
Окружающая обстановка
Прежде чем вы начнете кодировать и декодировать JSON с помощью Python, вам необходимо установить любой из доступных модулей JSON. Для этого руководства мы загрузили и установили Demjson следующим образом:
$tar xvfz demjson-1.6.tar.gz
$cd demjson-1.6 $python setup.py install
Функции JSON
Функция | Библиотеки |
---|---|
кодировать | Кодирует объект Python в строковое представление JSON. |
расшифровать | Декодирует строку в кодировке JSON в объект Python. |
Кодирование JSON в Python (кодирование)
Функция Python encode () кодирует объект Python в строковое представление JSON.
Синтаксис
demjson.encode(self, obj, nest_level=0)
пример
В следующем примере показаны массивы в формате JSON с Python.
#!/usr/bin/python
import demjson
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = demjson.encode(data)
print json
При выполнении это даст следующий результат -
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
Расшифровка JSON в Python (декодирование)
Python может использовать функцию demjson.decode () для декодирования JSON. Эта функция возвращает значение, декодированное из json, в соответствующий тип Python.
Синтаксис
demjson.decode(self, txt)
пример
В следующем примере показано, как Python можно использовать для декодирования объектов JSON.
#!/usr/bin/python
import demjson
json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = demjson.decode(json)
print text
При выполнении он даст следующий результат -
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
В этой главе рассказывается, как кодировать и декодировать объекты JSON с помощью языка программирования Ruby. Начнем с подготовки среды для программирования на Ruby для JSON.
Окружающая обстановка
Прежде чем вы начнете кодировать и декодировать JSON с помощью Ruby, вам необходимо установить любой из модулей JSON, доступных для Ruby. Возможно, вам потребуется установить Ruby gem, но если вы используете последнюю версию Ruby, тогда на вашем компьютере должен быть установлен gem, в противном случае давайте выполним следующий шаг, предполагая, что у вас уже установлен gem:
$gem install json
Разбор JSON с использованием Ruby
В следующем примере показано, что первые 2 ключа содержат строковые значения, а последние 3 ключа содержат массивы строк. Сохраним следующий контент в файле с именемinput.json.
{
"President": "Alan Isaac",
"CEO": "David Richardson",
"India": [
"Sachin Tendulkar",
"Virender Sehwag",
"Gautam Gambhir"
],
"Srilanka": [
"Lasith Malinga",
"Angelo Mathews",
"Kumar Sangakkara"
],
"England": [
"Alastair Cook",
"Jonathan Trott",
"Kevin Pietersen"
]
}
Ниже приведена программа Ruby, которая будет использоваться для анализа вышеупомянутого документа JSON.
#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'pp'
json = File.read('input.json')
obj = JSON.parse(json)
pp obj
При выполнении он даст следующий результат -
{
"President"=>"Alan Isaac",
"CEO"=>"David Richardson",
"India"=>
["Sachin Tendulkar", "Virender Sehwag", "Gautam Gambhir"],
"Srilanka"=>
["Lasith Malinga ", "Angelo Mathews", "Kumar Sangakkara"],
"England"=>
["Alastair Cook", "Jonathan Trott", "Kevin Pietersen"]
}
В этой главе рассказывается, как кодировать и декодировать объекты JSON с помощью языка программирования Java. Начнем с подготовки среды для программирования на Java для JSON.
Окружающая обстановка
Прежде чем вы начнете кодировать и декодировать JSON с помощью Java, вам необходимо установить любой из доступных модулей JSON. Для этого урока мы загрузили и установили JSON.simple и добавили расположениеjson-simple-1.1.1.jar файл в переменную среды CLASSPATH.
Сопоставление сущностей JSON и Java
JSON.simple отображает сущности с левой стороны на правую при декодировании или синтаксическом анализе, а также сопоставляет сущности справа налево при кодировании.
JSON | Ява |
---|---|
строка | java.lang.String |
количество | java.lang.Number |
истина | ложь | java.lang.Boolean |
ноль | ноль |
массив | java.util.List |
объект | java.util.Map |
При декодировании конкретным классом по умолчанию для java.util.List является org.json.simple.JSONArray, а конкретным классом по умолчанию для java.util.Map является org.json.simple.JSONObject .
Кодирование JSON в Java
Ниже приводится простой пример кодирования объекта JSON с использованием Java JSONObject, который является подклассом java.util.HashMap. Никакого заказа не предусмотрено. Если вам нужен строгий порядок элементов, используйте метод JSONValue.toJSONString (map) с упорядоченной реализацией карты, такой как java.util.LinkedHashMap.
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", new Integer(100));
obj.put("balance", new Double(1000.21));
obj.put("is_vip", new Boolean(true));
System.out.print(obj);
}
}
При компиляции и выполнении вышеуказанной программы будет сгенерирован следующий результат:
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
Ниже приведен еще один пример, демонстрирующий потоковую передачу объекта JSON с использованием Java JSONObject.
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name","foo");
obj.put("num",new Integer(100));
obj.put("balance",new Double(1000.21));
obj.put("is_vip",new Boolean(true));
StringWriter out = new StringWriter();
obj.writeJSONString(out);
String jsonText = out.toString();
System.out.print(jsonText);
}
}
При компиляции и выполнении вышеуказанной программы создается следующий результат:
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
Расшифровка JSON в Java
В следующем примере используется JSONObject и JSONArray где JSONObject - это java.util.Map, а JSONArray - это java.util.List, поэтому вы можете получить к ним доступ с помощью стандартных операций Map или List.
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
class JsonDecodeDemo {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
try{
Object obj = parser.parse(s);
JSONArray array = (JSONArray)obj;
System.out.println("The 2nd element of array");
System.out.println(array.get(1));
System.out.println();
JSONObject obj2 = (JSONObject)array.get(1);
System.out.println("Field \"1\"");
System.out.println(obj2.get("1"));
s = "{}";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,]";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,,2]";
obj = parser.parse(s);
System.out.println(obj);
}catch(ParseException pe) {
System.out.println("position: " + pe.getPosition());
System.out.println(pe);
}
}
}
При компиляции и выполнении вышеуказанной программы будет получен следующий результат:
The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]
AJAX - это асинхронный JavaScript и XML, который используется на стороне клиента как группа взаимосвязанных методов веб-разработки для создания асинхронных веб-приложений. Согласно модели AJAX, веб-приложения могут отправлять и получать данные с сервера асинхронно, не влияя на отображение и поведение существующей страницы.
Многие разработчики используют JSON для передачи обновлений AJAX между клиентом и сервером. Сайты, обновляющие спортивные результаты в реальном времени, можно рассматривать как пример AJAX. Если эти оценки необходимо обновить на веб-сайте, они должны храниться на сервере, чтобы веб-страница могла получить оценку, когда это потребуется. Здесь мы можем использовать данные в формате JSON.
Любые данные, обновляемые с помощью AJAX, могут быть сохранены с использованием формата JSON на веб-сервере. AJAX используется для того, чтобы javascript мог при необходимости извлекать эти файлы JSON, анализировать их и выполнять одну из следующих операций:
Сохраните проанализированные значения в переменных для дальнейшей обработки, прежде чем отображать их на веб-странице.
Он напрямую назначает данные элементам DOM на веб-странице, чтобы они отображались на веб-сайте.
пример
В следующем коде показан JSON с AJAX. Сохранить какajax.htmфайл. Здесь функция загрузки loadJSON () используется асинхронно для загрузки данных JSON.
<html>
<head>
<meta content = "text/html; charset = ISO-8859-1" http-equiv = "content-type">
<script type = "application/javascript">
function loadJSON() {
var data_file = "http://www.tutorialspoint.com/json/data.json";
var http_request = new XMLHttpRequest();
try{
// Opera 8.0+, Firefox, Chrome, Safari
http_request = new XMLHttpRequest();
}catch (e) {
// Internet Explorer Browsers
try{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e) {
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
http_request.onreadystatechange = function() {
if (http_request.readyState == 4 ) {
// Javascript function JSON.parse to parse JSON data
var jsonObj = JSON.parse(http_request.responseText);
// jsonObj variable now contains the data structure and can
// be accessed as jsonObj.name and jsonObj.country.
document.getElementById("Name").innerHTML = jsonObj.name;
document.getElementById("Country").innerHTML = jsonObj.country;
}
}
http_request.open("GET", data_file, true);
http_request.send();
}
</script>
<title>tutorialspoint.com JSON</title>
</head>
<body>
<h1>Cricketer Details</h1>
<table class = "src">
<tr><th>Name</th><th>Country</th></tr>
<tr><td><div id = "Name">Sachin</div></td>
<td><div id = "Country">India</div></td></tr>
</table>
<div class = "central">
<button type = "button" onclick = "loadJSON()">Update Details </button>
</div>
</body>
</html>
Ниже приведен входной файл data.json, имея данные в формате JSON, которые будут загружены асинхронно, когда мы нажмем кнопку Update Detailкнопка. Этот файл хранится вhttp://www.tutorialspoint.com/json/
{"name": "Brett", "country": "Australia"}
Приведенный выше HTML-код сгенерирует следующий экран, на котором вы можете проверить AJAX в действии -
Детали игрока в крикет
имя | Страна |
---|---|
Сачин
|
Индия
|
Когда вы нажимаете на Update Detailкнопку, вы должны получить следующий результат. Вы можете сами попробовать JSON с AJAX , если ваш браузер поддерживает Javascript.
Детали игрока в крикет
имя | Страна |
---|---|
Бретт
|
Австралия
|