JSON - текстовое представление данных.
К примеру, вам необходимо передать объект (экземпляр класса) по сети или записать в файл класс, а потом его прочитать из этой же или другой программы. В таком случае вам необходимо воспользоваться сериализацией (см https://ru.wikipedia.org/wiki/Сериализация). В большинстве высокоуровневых языках программирования есть собственные средства сериализации, зачастую сериализация происходит в нечитаемый человеком набор байтов.
Ниже пойдет речь о текстовой сериализации, json и xml. Хочется заметить, что если мы говорим о классической сериализации объектов, то сериализуются только данные (поля класса), тогда как информация о методах не содержиться в сериализованных данных. Такое представление называется DTO (см. https://ru.wikipedia.org/wiki/DTO)
К примеру у вас есть класс
class classA {
public:
int integerData = 3;
string stringData = "StringValue";
int foo [5] = { 16, 2, 77, 40, 12071 };
};
...
classA * objectA = new classA();
Тогда примерная сериализация в xml будет выглядеть так:
<objectA>
<integerData>3</integerData>
<stringData>StringValue</stringData>
<foo>
<value>16</value>
<value>2</value>
<value>77</value>
<value>40</value>
<value>12071</value>
</foo>
</objectA>
А на json это будет выглядеть так:
{
"integerData": 3,
"stringData": "StringValue",
"foo": [16, 2, 77, 40, 12071]
}
Не правда ли, читабельней? =) (субъективная оценка преподавателя)
(Хочется заметить, что данные примеры сериализации этого объекта в xml и json могут различаться от библиотек, ЯП и других факторов. Даже вы сами можете написать функцию (или метод) сериализации любого объекта)
Вы уже заметили различные типы в записи json Допустимые типы в записе объекта json:
- число
- строка
- литералы null, false, true
- объект json (вложенное определение)
- одномерный массив (объектов (число, строка, литерал, объект json))
Соответственно ниже приведены примеры этих типов;
{
"number1": 134,
"number2": -1,
"string1": "blablabla",
"string2": "",
"literal1": true,
"literal2": false,
"literal3": true,
"object": {
"number1": 36,
"number2": 0,
"string1": "qweqwe",
}
"array1": [1,2,4,5],
"array2": ["asd123", "32", "qwe"],
"array3": [],
"array4": [
{"a": 2},
{"b": 3}
]
}
Он читабельней и экономней, чем xml. Многообразие библиотек для работы с json на сегодняшний день почти не уступает библиотекам для работы с xml. Для Java - org.json.JSONObject или GSON, для Python - стандартная библиотека json, для C# - Json.NET, DataContractJsonSerializer Есть и для других языков.
Пример работы из Java:
import org.json.*;
JSONObject obj = new JSONObject(" .... ");
String pageName = obj.getJSONObject("pageInfo").getString("pageName");
JSONArray arr = obj.getJSONArray("posts");
for (int i = 0; i < arr.length(); i++)
{
String post_id = arr.getJSONObject(i).getString("post_id");
......
}
В Python json десерелизуется в dict (если использовать стандартную библиотеку json)
###Что почитать? http://ru.wikipedia.org/wiki/JSON
http://en.wikipedia.org/wiki/JSON
http://habrahabr.ru/post/230079/
http://habrahabr.ru/post/31225/
Надеюсь, мне удалось вам вкратце рассказать про json и вы начнете использовать его в вашей разработке.
Enjoy!