JSON
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
* Some parts of this feature may have varying levels of support.
Сводка
ÐбÑÐµÐºÑ JSON ÑодеÑÐ¶Ð¸Ñ Ð¼ÐµÑÐ¾Ð´Ñ Ð´Ð»Ñ ÑазбоÑа обÑекÑной ноÑаÑии JavaScript (JavaScript Object Notation â ÑокÑаÑÑнно JSON) и пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð½Ð°Ñений в JSON. Ðго нелÑÐ·Ñ Ð²ÑзваÑÑ ÐºÐ°Ðº ÑÑнкÑÐ¸Ñ Ð¸Ð»Ð¸ ÑконÑÑÑÑиÑоваÑÑ ÐºÐ°Ðº обÑекÑ, и кÑоме ÑвоиÑ
двÑÑ
меÑодов он не ÑодеÑÐ¶Ð¸Ñ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ инÑеÑеÑной ÑÑнкÑионалÑноÑÑи.
ÐпиÑание
>ÐбÑекÑÐ½Ð°Ñ Ð½Ð¾ÑаÑÐ¸Ñ JavaScript
JSON ÑвлÑеÑÑÑ ÑинÑакÑиÑом Ð´Ð»Ñ ÑеÑиализаÑии обÑекÑов, маÑÑивов, ÑиÑел, ÑÑÑок логиÑеÑкиÑ
знаÑений и знаÑÐµÐ½Ð¸Ñ null. Ðн оÑновÑваеÑÑÑ Ð½Ð° ÑинÑакÑиÑе JavaScript, однако вÑÑ Ð¶Ðµ оÑлиÑаеÑÑÑ Ð¾Ñ Ð½ÐµÐ³Ð¾: не каждÑй код на JavaScript ÑвлÑеÑÑÑ JSON, и не каждÑй JSON ÑвлÑеÑÑÑ ÐºÐ¾Ð´Ð¾Ð¼ на JavaScript. СмоÑÑиÑе Ñакже ÑÑаÑÑÑ JSON: подмножеÑÑво JavaScript, коÑоÑÑм он не ÑвлÑеÑÑÑ (на английÑком).
| Тип JavaScript | ÐÑлиÑÐ¸Ñ Ð¾Ñ JSON |
|---|---|
| ÐбÑекÑÑ Ð¸ маÑÑÐ¸Ð²Ñ | Ðмена ÑвойÑÑв Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÑÑоками, заклÑÑÑннÑми в двойнÑе кавÑÑки; конеÑнÑе запÑÑÑе запÑеÑенÑ. |
| ЧиÑла | ÐедÑÑие нÑли запÑеÑенÑ; пеÑед деÑÑÑиÑной запÑÑой обÑзаÑелÑно должна бÑÑÑ Ñ Ð¾ÑÑ Ð±Ñ Ð¾Ð´Ð½Ð° ÑиÑÑа. |
| СÑÑоки |
ТолÑко огÑаниÑеннÑй Ð½Ð°Ð±Ð¾Ñ Ñимволов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°ÑкÑаниÑован; некоÑоÑÑе
ÑпÑавлÑÑÑие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð·Ð°Ð¿ÑеÑенÑ; ÑазÑеÑÐµÐ½Ñ ÑникоднÑе ÑимволÑ
ÑазделиÑелÑной линии (U+2028) и ÑазделиÑелÑного паÑагÑаÑа (U+2029); ÑÑÑоки Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð·Ð°ÐºÐ»ÑÑÐµÐ½Ñ Ð² двойнÑе кавÑÑки. СмоÑÑиÑе ÑледÑÑÑий
пÑимеÑ, в коÑоÑом меÑод js |
Ðиже пÑедÑÑавлен полнÑй ÑинÑакÑÐ¸Ñ JSON:
JSON = null
or true or false
or JSONNumber
or JSONString
or JSONObject
or JSONArray
JSONNumber = - PositiveNumber
or PositiveNumber
PositiveNumber = DecimalNumber
or DecimalNumber . Digits
or DecimalNumber . Digits ExponentPart
or DecimalNumber ExponentPart
DecimalNumber = 0
or OneToNine Digits
ExponentPart = e Exponent
or E Exponent
Exponent = Digits
or + Digits
or - Digits
Digits = Digit
or Digits Digit
Digit = 0 through 9
OneToNine = 1 through 9
JSONString = ""
or " StringCharacters "
StringCharacters = StringCharacter
or StringCharacters StringCharacter
StringCharacter = any character
except " or \ or U+0000 through U+001F
or EscapeSequence
EscapeSequence = \" or \/ or \\ or \b or \f or \n or \r or \t
or \u HexDigit HexDigit HexDigit HexDigit
HexDigit = 0 through 9
or A through F
or a through f
JSONObject = { }
or { Members }
Members = JSONString : JSON
or Members , JSONString : JSON
JSONArray = [ ]
or [ ArrayElements ]
ArrayElements = JSON
or ArrayElements , JSON
Ðо вÑеÑ
пÑодÑкÑиÑÑ
могÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð½ÐµÐ·Ð½Ð°ÑаÑие пÑобелÑнÑе ÑимволÑ, за иÑклÑÑением пÑодÑкÑий ЧиÑлоJSON (ÑиÑла не Ð´Ð¾Ð»Ð¶Ð½Ñ ÑодеÑжаÑÑ Ð¿Ñобелов) и СÑÑокаJSON (где они инÑеÑпÑеÑиÑÑÑÑÑÑ ÐºÐ°Ðº ÑаÑÑÑ ÑÑÑоки или возбÑждаÑÑ Ð¾ÑибкÑ). ÐÑобелÑнÑми Ñимволами ÑÑиÑаÑÑÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑабÑлÑÑии (U+0009), возвÑаÑа каÑеÑки (U+000D), пеÑевода ÑÑÑоки (U+000A) и, ÑобÑÑвенно, пÑобела (U+0020).
ÐеÑодÑ
JSON.parse()-
РазбиÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ JSON, возможно Ñ Ð¿ÑеобÑазованием полÑÑаемого знаÑÐµÐ½Ð¸Ñ Ð¸ его ÑвойÑÑв и возвÑаÑÐ°ÐµÑ ÑазобÑанное знаÑение.
JSON.stringify()-
ÐозвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ JSON, ÑооÑвеÑÑÑвÑÑÑÑÑ ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑениÑ, возможно Ñ Ð²ÐºÐ»ÑÑением ÑолÑко опÑеделÑннÑÑ ÑвойÑÑв или Ñ Ð·Ð°Ð¼ÐµÐ½Ð¾Ð¹ знаÑений ÑвойÑÑв опÑеделÑемÑм полÑзоваÑелем ÑпоÑобом.
ÐолиÑил
ÐбÑÐµÐºÑ JSON не поддеÑживаеÑÑÑ ÑÑаÑÑми бÑаÑзеÑами. ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑабоÑаÑÑ Ñ Ð½Ð¸Ð¼, добавив ÑледÑÑÑий код в наÑало ваÑиÑ
ÑкÑипÑов, он позволÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð¾Ð±ÑÐµÐºÑ JSON в ÑеализаÑиÑÑ
, коÑоÑÑе его еÑÑ Ð½Ðµ поддеÑживаÑÑ (напÑимеÑ, в Internet Explorer 6).
СледÑÑÑий алгоÑиÑм имиÑиÑÑÐµÑ ÑабоÑÑ Ð½Ð°ÑÑоÑÑего обÑекÑа JSON:
if (!window.JSON) {
window.JSON = {
parse: function (sJSON) {
return eval("(" + sJSON + ")");
},
stringify: function (vContent) {
if (vContent instanceof Object) {
var sOutput = "";
if (vContent.constructor === Array) {
for (
var nId = 0;
nId < vContent.length;
sOutput += this.stringify(vContent[nId]) + ",", nId++
);
return "[" + sOutput.substr(0, sOutput.length - 1) + "]";
}
if (vContent.toString !== Object.prototype.toString) {
return '"' + vContent.toString().replace(/"/g, "\\$&") + '"';
}
for (var sProp in vContent) {
sOutput +=
'"' +
sProp.replace(/"/g, "\\$&") +
'":' +
this.stringify(vContent[sProp]) +
",";
}
return "{" + sOutput.substr(0, sOutput.length - 1) + "}";
}
return typeof vContent === "string"
? '"' + vContent.replace(/"/g, "\\$&") + '"'
: String(vContent);
},
};
}
Ðолее ÑложнÑми извеÑÑнÑми полиÑилами Ð´Ð»Ñ Ð¾Ð±ÑекÑа JSON ÑвлÑÑÑÑÑ Ð¿ÑоекÑÑ JSON2 и JSON3.
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-json-object> |