{"id":280245,"date":"2016-10-31T21:50:04","date_gmt":"2016-10-31T18:50:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=280245"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=280245","title":{"rendered":"\u041f\u0430\u0440\u0441\u0438\u043d\u0433 JSON \u2014 \u044d\u0442\u043e \u043c\u0438\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u0435"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/55a\/70e\/a58\/55a70ea5864211ffb526350b07bcf847.jpg\" alt=\"image\"\/><\/p>\n<p>  JSON \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u0435-\u0444\u0430\u043a\u0442\u043e, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u0440\u0435\u0447\u044c \u043e (\u0434\u0435)\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0431\u043c\u0435\u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0441\u0435\u0442\u0438 \u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u041d\u043e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u044b \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 JSON? \u0412\u0441\u0435 \u043c\u044b \u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043f\u0438\u0448\u0435\u043c \u0442\u0435\u0441\u0442\u044b, \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 JSON-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043d\u0443\u0436\u0434. \u042f \u043f\u043e\u043a\u0430\u0436\u0443 \u0432\u0430\u043c, \u0447\u0442\u043e JSON \u2014 \u044d\u0442\u043e \u0438\u0434\u0435\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u0430 \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439, \u043a\u0430\u043a\u0438\u043c \u0435\u0433\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442. \u042f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0438 \u0434\u0432\u0443\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0432\u0435\u0434\u0443\u0449\u0438\u0445 \u0441\u0435\u0431\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0438 \u0437\u043b\u043e\u0432\u0440\u0435\u0434\u043d\u0430\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0431\u0430\u0433\u0430\u043c, \u043f\u0430\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 DoS, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e JSON-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u0449\u0438 \u043f\u043b\u043e\u0445\u043e \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">1. <a href=\"#1\">\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 JSON <\/a><br \/>  2. <a href=\"#2\">\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/a><br \/>  2.1. <a href=\"#21\">\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/a><br \/>  2.2. <a href=\"#22\">\u0427\u0438\u0441\u043b\u0430 (Numbers)<\/a><br \/>  2.3. <a href=\"#23\">\u041c\u0430\u0441\u0441\u0438\u0432\u044b<\/a><br \/>  2.4. <a href=\"#24\">\u041e\u0431\u044a\u0435\u043a\u0442\u044b<\/a><br \/>  2.5. <a href=\"#25\">\u0421\u0442\u0440\u043e\u043a\u0438<\/a><br \/>  2.6. <a href=\"#26\">\u0414\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f RFC 7159<\/a> <br \/>  3. <a href=\"#3\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a> <br \/>  4. <a href=\"#4\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a><br \/>  4.1. <a href=\"#41\">\u041f\u043e\u043b\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/a><br \/>  4.2. <a href=\"#42\">C-\u043f\u0430\u0440\u0441\u0435\u0440\u044b<\/a><br \/>  4.3. <a href=\"#43\">Objective-C-\u043f\u0430\u0440\u0441\u0435\u0440\u044b<\/a><br \/>  4.4. <a href=\"#44\">Apple (NS)JSONSerialization<\/a><br \/>  4.5. <a href=\"#45\">Freddy (Swift)<\/a><br \/>  4.6. <a href=\"#46\">Bash JSON.sh<\/a><br \/>  4.7. <a href=\"#47\">\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b<\/a><br \/>  4.8. <a href=\"#48\">JSON Checker<\/a><br \/>  4.9. <a href=\"#49\">\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a> <br \/>  5. <a href=\"#5\">\u041a\u043e\u043d\u0442\u0435\u043d\u0442 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/a> <br \/>  6. <a href=\"#6\">STJSON<\/a> <br \/>  7. <a href=\"#7\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a> <br \/>  8. <a href=\"#8\">\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/a> <\/div>\n<\/div>\n<p><a name=\"habracut\"><\/a><br \/>  <a name=\"1\"><\/a><\/p>\n<h1>1. \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 JSON<\/h1>\n<p>  JSON \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e HTTP, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9B%D0%B8%D0%BD%D0%B3%D0%B2%D0%B0_%D1%84%D1%80%D0%B0%D0%BD%D0%BA%D0%B0\">\u043b\u0438\u043d\u0433\u0432\u0430 \u0444\u0440\u0430\u043d\u043a\u0430<\/a> \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u0433\u0435\u0442\u0435\u0440\u043e\u0433\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043a\u0430\u043a \u0432 \u0432\u0435\u0431-, \u0442\u0430\u043a \u0438 \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435.<\/p>\n<p>  \u0412 2001 \u0433\u043e\u0434\u0443 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D1%80%D0%BE%D0%BA%D1%84%D0%BE%D1%80%D0%B4,_%D0%94%D1%83%D0%B3%D0%BB%D0%B0%D1%81\">\u0414\u0443\u0433\u043b\u0430\u0441 \u041a\u0440\u043e\u043a\u0444\u043e\u0440\u0434<\/a> \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u0440\u043e\u0442\u043a\u0443\u044e \u0438 \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e JSON, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0432\u0438\u0437\u0438\u0442\u043d\u044b\u0445 \u043a\u0430\u0440\u0442\u043e\u0447\u0435\u043a, \u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0435\u0447\u0430\u0442\u0430\u043b\u0438 \u043f\u043e\u043b\u043d\u0443\u044e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443 JSON.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/fd3\/942\/ae0\/fd3942ae0a3a4d1f8472493fdf491121.png\"\/><\/p>\n<p>  JSON \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b, \u043d\u043e \u043b\u0438\u0448\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c JSON. \u041a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u044c \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c\u0438. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 \u0438 \u0438\u0445 \u043c\u0443\u0442\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0439.<\/p>\n<p>  \u041a\u0440\u043e\u043a\u0444\u043e\u0440\u0434 <a href=\"https:\/\/www.computer.org\/csdl\/mags\/co\/2012\/04\/mco2012040006.html\">\u0440\u0435\u0448\u0438\u043b<\/a> \u043d\u0435 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c JSON:<\/p>\n<blockquote><p>\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043c\u043e\u0438\u043c \u0441\u0430\u043c\u044b\u043c \u0441\u043c\u0435\u043b\u044b\u043c \u0434\u0438\u0437\u0430\u0439\u043d-\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u043b \u043e\u0442\u043a\u0430\u0437 \u043e\u0442 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u044f JSON \u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041c\u044b \u0437\u0430\u0441\u0442\u0440\u044f\u043b\u0438 \u0441 JSON: \u0447\u0442\u043e \u0431\u044b \u043d\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 \u0441\u043e\u0431\u043e\u0439 \u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0444\u043e\u0440\u043c\u0430, \u043e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u043e\u0439.<\/p><\/blockquote>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, JSON \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0432 \u0448\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445:<\/p>\n<ol>\n<li>2002 \u2014 <a href=\"http:\/\/www.json.org\/\">json.org<\/a> \u0438 \u0432\u0438\u0437\u0438\u0442\u043a\u0438.<\/li>\n<li>2006 \u2014 <a href=\"https:\/\/tools.ietf.org\/html\/rfc4627\">IETF RFC 4627<\/a>, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 application\/json MIME \u0442\u0438\u043f \u0441\u0440\u0435\u0434\u044b.<\/li>\n<li>2011 \u2014 <a href=\"http:\/\/www.ecma-international.org\/ecma-262\/5.1\/#sec-15.12\">ECMAScript 262, \u0440\u0430\u0437\u0434\u0435\u043b 15.12<\/a>.<\/li>\n<li>2013 \u2014 <a href=\"http:\/\/www.ecma-international.org\/publications\/standards\/Ecma-404.htm\">ECMA 404<\/a>. \u041a\u0430\u043a \u0441\u043e\u043e\u0431\u0449\u0438\u043b \u0422\u0438\u043c \u0411\u0440\u0435\u0439 (\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 RFC 7159), <a href=\"https:\/\/www.tbray.org\/ongoing\/When\/201x\/2014\/03\/05\/RFC7159-JSON\">ECMA \u043f\u043e\u0442\u043e\u0440\u043e\u043f\u0438\u043b\u0430\u0441\u044c \u0441 \u0440\u0435\u043b\u0438\u0437\u043e\u043c<\/a>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e: <br \/> <br \/>\n<blockquote><p>\u041a\u0442\u043e-\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u043b \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 ECMA, \u0447\u0442\u043e IETF \u0441\u043f\u044f\u0442\u0438\u043b\u0430 \u0438 \u0441\u043e\u0431\u0440\u0430\u043b\u0430\u0441\u044c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c JSON \u0431\u0435\u0437 \u043e\u0433\u043b\u044f\u0434\u043a\u0438 \u043d\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u043b\u043e\u043c\u043a\u0443 \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, \u0438 \u0441 \u044d\u0442\u043e\u0439 \u0443\u0436\u0430\u0441\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u0441\u0440\u043e\u0447\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c. &lt;&#8230;&gt; \u042d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a \u0436\u0430\u043b\u043e\u0431\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u0438 \u043d\u0430 \u0440\u0435\u0432\u0438\u0437\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b IETF.<\/p><\/blockquote>\n<\/li>\n<li>2014 \u2014 <a href=\"https:\/\/tools.ietf.org\/html\/rfc7158\">IETF RFC 7158<\/a>. \u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u00abStandard Tracks\u00bb \u0432\u043c\u0435\u0441\u0442\u043e \u00abInformational\u00bb; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0430\u043b\u044f\u0440\u044b (\u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432) \u0432\u0440\u043e\u0434\u0435 123 \u0438 true \u043d\u0430 root-\u0443\u0440\u043e\u0432\u043d\u0435, \u043a\u0430\u043a \u0438 ECMA; \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0435\u0440\u0435\u0433\u0430\u0435\u0442 \u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432\u0440\u043e\u0434\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u043a\u043b\u044e\u0447\u0435\u0439 \u0438\u043b\u0438 \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0445 Unicode-\u0441\u0442\u0440\u043e\u043a, \u0445\u043e\u0442\u044f \u0438 \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0438\u0445 \u044f\u0432\u043d\u043e.<\/li>\n<li>2014 \u2014 <a href=\"https:\/\/tools.ietf.org\/html\/rfc7159\">IETF RFC 7159<\/a>. \u0412\u044b\u043f\u0443\u0449\u0435\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0432 RFC 7158, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0434\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043c\u0430\u0440\u0442\u043e\u043c 2013-\u0433\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0430\u0440\u0442\u0430 2014-\u0433\u043e.<\/li>\n<\/ol>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u044f\u0441\u043d\u043e\u0441\u0442\u044c, RFC 7159 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u0439 \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u043b\u043e\u0445\u043e \u043e\u0441\u0432\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0432 RFC 7159 <a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-1\">\u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f<\/a>, \u0447\u0442\u043e \u0446\u0435\u043b\u044c\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 JSON \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u00ab\u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e JavaScript\u00bb, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, JSON \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 (unescaped) \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043a\u043e\u043d\u0446\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 Unicode <code>U+2028 LINE SEPARATOR<\/code> \u0438 <code>U+2029 PARAGRAPH SEPARATOR<\/code>. \u041d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f JavaScript \u0433\u043b\u0430\u0441\u0438\u0442, \u0447\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043a\u043e\u043d\u0446\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 (<a href=\"http:\/\/www.ecma-international.org\/ecma-262\/5.1\/#sec-7.8.4\">ECMA-262 \u2014 7.8.4 String Literals<\/a>), \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043a \u044d\u0442\u0438\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f <code>U+2028<\/code> \u0438 <code>U+2029<\/code> (<a href=\"http:\/\/www.ecma-international.org\/ecma-262\/5.1\/#sec-7.3\">7.3 Line Terminators<\/a>). \u0422\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u044d\u0442\u0438 \u0434\u0432\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 JSON-\u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0431\u0435\u0437 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u0432 JS \u043e\u043d\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442\u0441\u044f, \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e JSON <b>\u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f<\/b> \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c JavaScript, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0446\u0435\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 RFC 7159 \u043d\u0435 \u043f\u0440\u043e\u044f\u0441\u043d\u044f\u0435\u0442, \u043a\u0430\u043a JSON-\u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 (extreme number values), \u0438\u0441\u043a\u0430\u0436\u0451\u043d\u043d\u044b\u043c\u0438 Unicode-\u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0438\u043b\u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438. \u041e\u0434\u043d\u0438 \u0442\u0443\u043f\u0438\u043a\u043e\u0432\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u044f\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0431\u0435\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439, \u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u044e\u0442 \u043e\u0442 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b\u0445 \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043d\u0438\u0439.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c RFC 7159, \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0431\u043e\u0440\u043d\u0438\u043a \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 JSON-\u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b, \u043a\u0430\u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 JSON-\u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442. \u041d\u0438\u0436\u0435 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u0441\u0442\u043e\u0438\u0442 \u043b\u0438 \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b. \u0412 \u0441\u0432\u043e\u0438\u0445 \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u044f\u0445 \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c \u0441 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>  <a name=\"2\"><\/a><\/p>\n<h1>2. \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/h1>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u044f \u043e\u0431\u044a\u044f\u0441\u043d\u044e, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u0430\u0445 \u0438 \u043e\u0431\u043e\u0441\u043d\u0443\u044e, \u0434\u043e\u043b\u0436\u043d\u044b \u043b\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c RFC 7159, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u0432\u0435\u0440\u0433\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u2014 \u043b\u0438\u0431\u043e \u0436\u0435 \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>  \u0418\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u0431\u0443\u043a\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u0431 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435:<\/p>\n<ul>\n<li><code>y<\/code> (yes) \u2014 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0438\u043d\u0433;<\/li>\n<li><code>n<\/code> (no) \u2014 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430;<\/li>\n<li><code>i<\/code> (implementation) \u2014 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/li>\n<\/ul>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u043b\u0441\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>n_string_unescaped_tab.json<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>[&quot;09&quot;]<\/code> \u2014 \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0439 \u0432 \u0441\u0435\u0431\u044f \u0441\u0438\u043c\u0432\u043e\u043b <code>TAB 0x09<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0414\u041e\u041b\u0416\u0415\u041d \u0431\u044b\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d (u-escaped) \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u043c JSON. \u0424\u0430\u0439\u043b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0441\u0442\u0440\u043e\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f <code>string<\/code>, \u0430 \u043d\u0435 <code>structure<\/code>, <code>array<\/code> \u0438\u043b\u0438 <code>object<\/code>. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e RFC 7159 \u044d\u0442\u043e \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0435 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <code>n<\/code>.<\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0441\u043a\u0430\u043b\u044f\u0440\u043e\u0432 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 (<code>&quot;test&quot;<\/code>), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0432\u0441\u0442\u0440\u043e\u0438\u043b \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u044b (<code>[&quot;test&quot;]<\/code>).<\/p>\n<p>  \u0411\u043e\u043b\u044c\u0448\u0435 300 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/nst\/JSONTestSuite\">JSONTestSuite<\/a>.<\/p>\n<p>  \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0451\u043c \u0444\u0430\u0439\u043b\u044b \u044f \u0434\u0435\u043b\u0430\u043b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u043e \u043c\u0435\u0440\u0435 \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439, \u0441\u0442\u0430\u0440\u0430\u044f\u0441\u044c \u0443\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a\u0440\u0430\u0439\u043d\u0438\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u043c \u0438 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c. \u042f \u0442\u0430\u043a\u0436\u0435 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437 \u0447\u0443\u0436\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u043e\u0432, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 (\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c <a href=\"https:\/\/code.google.com\/archive\/p\/json-test-suite\/\">json-test-suite<\/a> \u0438 <a href=\"http:\/\/www.json.org\/JSON_checker\/\">JSON Checker<\/a>), \u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b JSON-\u0444\u0430\u0439\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e \u041f\u041e <a href=\"http:\/\/lcamtuf.coredump.cx\/afl\/\">American Fuzzy Lop<\/a>. \u0417\u0430\u0442\u0435\u043c \u0443\u0431\u0440\u0430\u043b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0438\u0435 \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443, \u0430 \u043f\u043e\u0442\u043e\u043c \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0434\u0430\u044e\u0449\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b (\u0441\u043c. <a href=\"#3\">\u0440\u0430\u0437\u0434\u0435\u043b 3<\/a>).<\/p>\n<p>  <a name=\"21\"><\/a><\/p>\n<h3>2.1. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/h3>\n<p>  <b>\u0421\u043a\u0430\u043b\u044f\u0440\u044b<\/b> \u2014 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0441\u043a\u0430\u043b\u044f\u0440\u044b \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 123 \u0438\u043b\u0438 \u00abasd\u00bb. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0432\u0441\u0451 \u0435\u0449\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 RFC 4627 \u0438 \u043d\u0435 \u0441\u0442\u0430\u043d\u0443\u0442 \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0441\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"javascript\">y_structure_lonely_string.json\t&quot;asd&quot; <\/code><\/pre>\n<p>  <b>\u0417\u0430\u043c\u044b\u043a\u0430\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u044f\u0442\u044b\u0435 (trailing commas)<\/b>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>[123,]<\/code> \u0438\u043b\u0438 <code>{&quot;a&quot;:1,}<\/code>, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u044b, \u0432\u0435\u0440\u043d\u043e? \u041d\u043e \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e RFC 7159 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u0441\u0435\u0440\u0430\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u00ab\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u00bb (<a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-9\">\u0440\u0430\u0437\u0434\u0435\u043b 9<\/a>), \u0445\u043e\u0442\u044f \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439 \u043d\u0430\u0441\u0447\u0451\u0442 \u043d\u0438\u0445 \u043d\u0435 \u0434\u0430\u0451\u0442\u0441\u044f. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0437\u0430\u043c\u044b\u043a\u0430\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u044f\u0442\u044b\u0435 \u2014 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u043d\u0435 \u0447\u0430\u0441\u0442\u044c JSON-\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438, \u043f\u0430\u0440\u0441\u0435\u0440\u044b <b>\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u044b<\/b> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0445, \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 n.<\/p>\n<pre><code class=\"javascript\">n_object_trailing_comma.json\t{&quot;id&quot;:0,} n_object_several_trailing_commas.json\t{&quot;id&quot;:0,,,,,} <\/code><\/pre>\n<p>  <b>\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438<\/b> \u0442\u043e\u0436\u0435 \u043d\u0435 \u0447\u0430\u0441\u0442\u044c \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438. \u041a\u0440\u043e\u043a\u0444\u043e\u0440\u0434 <a href=\"https:\/\/plus.google.com\/+DouglasCrockfordEsq\/posts\/RK8qyGVaGSr\">\u0443\u0431\u0440\u0430\u043b<\/a> \u0438\u0445 \u0438\u0437 \u0440\u0430\u043d\u043d\u0438\u0445 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439. \u041d\u043e \u044d\u0442\u043e \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432, \u0437\u0430\u043c\u044b\u043a\u0430\u044e\u0449\u0438\u0445 <code>[1]\/\/xxx<\/code> \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 <code>[1,\/*xxx*\/2]<\/code>.<\/p>\n<pre><code class=\"html\">y_string_comments.json\t[&quot;a\/*b*\/c\/*d\/\/e&quot;] n_object_trailing_comment.json\t{&quot;a&quot;:&quot;b&quot;}\/**\/ n_structure_object_with_comment.json \t{&quot;a&quot;:\/*comment*\/&quot;b&quot;} <\/code><\/pre>\n<p>  <b>\u041d\u0435\u0437\u0430\u043c\u043a\u043d\u0443\u0442\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b<\/b>. \u0422\u0435\u0441\u0442\u044b \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0432\u0441\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0438 \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0435 (\u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442) \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>[<\/code> \u0438\u043b\u0438 <code>[1,{,3]<\/code>. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0438 \u0442\u0435\u0441\u0442\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b.<\/p>\n<pre><code class=\"html\">n_structure_object_unclosed_no_value.json\t{&quot;&quot;: n_structure_object_followed_by_closing_object.json\t{}} <\/code><\/pre>\n<p>  \u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u2014 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u041f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c, \u0447\u0435\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u2014 \u0442\u043e\u0436\u0435 \u043c\u0430\u0441\u0441\u0438\u0432, \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0441\u043b\u043e\u0432\u043d\u043e \u043c\u0430\u0442\u0440\u0451\u0448\u043a\u0430 <code>[[[[[]]]]]<\/code>. RFC 7159 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u0441\u0435\u0440\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (<a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-9\">\u0440\u0430\u0437\u0434\u0435\u043b 9<\/a>).<\/p>\n<p>  \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u0434\u0430\u044e\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Xcode \u0443\u043f\u0430\u0434\u0451\u0442, \u0435\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b .json, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0442\u044b\u0441\u044f\u0447\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 <code>[<\/code>. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 JSON \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0433\u043b\u0443\u0431\u0438\u043d\u044b.<\/p>\n<pre><code class=\"bash\">$ python -c &quot;print('['*100000)&quot; &gt; ~\/x.json $ .\/Xcode ~\/x.json Segmentation fault: 11 <\/code><\/pre>\n<p>  <b>\u041f\u0440\u043e\u0431\u0435\u043b\u044b.<\/b> \u0413\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430 RFC 7159 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0438\u0445 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <code>0x20<\/code> (\u043f\u0440\u043e\u0431\u0435\u043b), <code>0x09<\/code> (\u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044e), <code>0x0A<\/code> (\u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0440\u043e\u043a\u0438) \u0438 <code>0x0D<\/code> (\u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043a\u0430\u0440\u0435\u0442\u043a\u0438). \u041f\u0440\u043e\u0431\u0435\u043b\u044b \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0434\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u00ab\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\u00bb (structural characters) <code>[]{}:,<\/code>. \u0422\u0430\u043a \u0447\u0442\u043e <code>20[090A]0D<\/code> \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u0442\u0435\u0441\u0442\u044b. \u0418 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u0444\u0430\u0439\u043b \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u0442\u0435\u0441\u0442\u044b, \u0435\u0441\u043b\u0438 \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u0432\u0441\u0435 \u0432\u0438\u0434\u044b \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u044f\u0432\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u043e\u0440\u043c\u0443 \u0432\u0432\u043e\u0434\u0430 <code>0x0C<\/code> \u0438\u043b\u0438 <code>[E281A0]<\/code> \u2014 UTF-8 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u0435\u043b\u044f \u0441\u043b\u043e\u0432 <code>U+2060 WORD JOINER<\/code>.<\/p>\n<pre><code class=\"html\">n_structure_whitespace_formfeed.json\t[0C] n_structure_whitespace_U+2060_word_joiner.json\t[E281A0] n_structure_no_data.json <\/code><\/pre>\n<p>  <a name=\"22\"><\/a><\/p>\n<h3>2.2. \u0427\u0438\u0441\u043b\u0430<\/h3>\n<p>  <b>NaN \u0438 Infinity.<\/b> \u0421\u0442\u0440\u043e\u043a\u0438, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 <code>NaN<\/code> \u0438\u043b\u0438 <code>Infinity<\/code>, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438 JSON. \u041d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0438\u0445 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442, \u0440\u0430\u0441\u0446\u0435\u043d\u0438\u0432\u0430\u044f \u043a\u0430\u043a \u00ab\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u00bb (<a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-9\">\u0440\u0430\u0437\u0434\u0435\u043b 9<\/a>). \u0412 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b <code>-NaN<\/code> \u0438 <code>-Infinity<\/code>.<\/p>\n<pre><code class=\"html\">n_number_NaN.json\t[NaN] n_number_minus_infinity.json\t[-Infinity] <\/code><\/pre>\n<p>  <b>\u0428\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430<\/b> \u2014 RFC 7159 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0435\u0441\u0442\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0447\u0438\u0441\u043b\u0430 \u0432\u0440\u043e\u0434\u0435 <code>0xFF<\/code>, \u0438 \u0442\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433.<\/p>\n<pre><code class=\"javascript\">n_number_hex_2_digits.json\t[0x42] <\/code><\/pre>\n<p>  <b>\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c<\/b> \u2014 \u0430 \u0447\u0442\u043e \u043d\u0430\u0441\u0447\u0451\u0442 \u0447\u0438\u0441\u0435\u043b \u0438\u0437 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0446\u0438\u0444\u0440? \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e RFC 7159, \u00abJSON-\u043f\u0430\u0440\u0441\u0435\u0440 \u0414\u041e\u041b\u0416\u0415\u041d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u0438\u0434\u044b \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 JSON\u00bb (<a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-9\">\u0433\u043b\u0430\u0432\u0430 9<\/a>). \u041d\u043e \u0432 \u0442\u043e\u043c \u0436\u0435 \u043f\u0430\u0440\u0430\u0433\u0440\u0430\u0444\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f: \u00ab\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0447\u0438\u0441\u0435\u043b\u00bb. \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043c\u043e\u0433\u0443\u0442 \u043b\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044f\u0441\u044c \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 <code>1e9999<\/code> \u0438\u043b\u0438 <code>0.0000000000000000000000000000001<\/code>.<\/p>\n<pre><code class=\"javascript\">y_number_very_big_negative_int.json\t[-237462374673276894279832(...) <\/code><\/pre>\n<p>  <b>\u042d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/b> \u2014 \u0438\u0445 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 (\u0441\u043c. \u0433\u043b\u0430\u0432\u0443 \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438). \u0415\u0441\u0442\u044c \u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 (<code>[0E0]<\/code>, <code>[0e+1]<\/code>), \u0438 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b (<code>[1.0e+]<\/code>, <code>[0E]<\/code> \u0438 <code>[1eE2]<\/code>).<\/p>\n<pre><code class=\"html\">n_number_0_capital_E+.json\t[0E+] n_number_.2e-3.json\t[.2e-3] y_number_double_huge_neg_exp.json\t[123.456e-789] <\/code><\/pre>\n<p>  <a name=\"23\"><\/a><\/p>\n<h3>2.3. \u041c\u0430\u0441\u0441\u0438\u0432\u044b<\/h3>\n<p>  \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u0440\u0430\u0439\u043d\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438, \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043d\u0438\u0435\u043c\/\u0437\u0430\u043a\u0440\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041e\u043d\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <a href=\"#21\">2.1 (\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b)<\/a>. \u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0439\u0434\u0443\u0442 <code>[[]<\/code> \u0438 <code>[[]]]<\/code>, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0443\u0442 <code>]<\/code> \u0438\u043b\u0438 <code>[[]]]<\/code>.<\/p>\n<pre><code class=\"html\">n_array_comma_and_number.json\t[,1] n_array_colon_instead_of_comma.json\t[&quot;&quot;: 1] n_array_unclosed_with_new_lines.json\t[1,0A10A,1 <\/code><\/pre>\n<p>  <a name=\"24\"><\/a><\/p>\n<h3>2.4. \u041e\u0431\u044a\u0435\u043a\u0442\u044b<\/h3>\n<p>  <b>\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u043a\u043b\u044e\u0447\u0438<\/b>. \u0412 <a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-4\">\u0440\u0430\u0437\u0434\u0435\u043b\u0435 4 RFC 7159<\/a> \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f: \u00ab\u0412 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430\u00bb. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0434\u0438\u043d \u043a\u043b\u044e\u0447 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 <code>{&quot;a&quot;:1,&quot;a&quot;:2}<\/code>, \u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u0441\u0435\u0440\u0430\u043c \u0441\u0430\u043c\u0438\u043c \u0440\u0435\u0448\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445. \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 4 \u0434\u0430\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u00ab[\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435] \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438\u043b\u0438 \u0441\u0431\u043e\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u00bb, \u0431\u0435\u0437 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0441\u0431\u043e\u0439 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c RFC, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 <a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-9\">\u044d\u0442\u043e\u043c\u0443<\/a>: \u00abJSON-\u043f\u0430\u0440\u0441\u0435\u0440 \u0414\u041e\u041b\u0416\u0415\u041d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u0438\u0434\u044b \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 JSON\u00bb. <\/p>\n<p>  \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0442\u0430\u043a\u0438\u0445 \u043e\u0441\u043e\u0431\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447: \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>{&quot;a&quot;:1,&quot;a&quot;:1}<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0447\u044c\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0441\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043b\u044e\u0447\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438, \u043d\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b\u043c\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 Inicode NFC: <code>{&quot;C3A9:&quot;NFC&quot;,&quot;65CC81&quot;:&quot;NFD&quot;}<\/code>, \u0437\u0434\u0435\u0441\u044c \u043e\u0431\u0430 \u043a\u043b\u044e\u0447\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 &quot;\u00e9&quot;. \u0422\u0430\u043a\u0436\u0435 \u0432 \u0442\u0435\u0441\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <code>{&quot;a&quot;:0,&quot;a&quot;:-0}<\/code>.<\/p>\n<pre><code class=\"html\">y_object_empty_key.json\t{&quot;&quot;:0} y_object_duplicated_key_and_value.json\t{&quot;a&quot;:&quot;b&quot;,&quot;a&quot;:&quot;b&quot;} n_object_double_colon.json\t{&quot;x&quot;::&quot;b&quot;} n_object_key_with_single_quotes.json\t{key: 'value'} n_object_missing_key.json\t{:&quot;b&quot;} n_object_non_string_key.json \t{1:1} <\/code><\/pre>\n<p>  <a name=\"25\"><\/a><\/p>\n<h3>2.5. \u0421\u0442\u0440\u043e\u043a\u0438<\/h3>\n<p>  <b>\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u0430.<\/b> \u00abJSON-\u0442\u0435\u043a\u0441\u0442 \u0414\u041e\u041b\u0416\u0415\u041d \u0431\u044b\u0442\u044c \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 UTF-8, UTF-16 \u0438\u043b\u0438 UTF-32. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f UTF-8\u00bb (<a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-8.1\">\u0440\u0430\u0437\u0434\u0435\u043b 8.1<\/a>).<br \/>  \u0422\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0442\u0440\u0451\u0445 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043e\u043a. \u0422\u0435\u043a\u0441\u0442\u044b \u0432 UTF-16 \u0438 UTF-32 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u0448\u0438\u0435 \u0438 \u043c\u043b\u0430\u0434\u0448\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b.<\/p>\n<p>  \u0421\u0431\u043e\u0439\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 ISO-Latin-1.<\/p>\n<pre><code class=\"html\">y_string_utf16.json\tFFFE[00&quot;00E900&quot;00]00 n_string_iso_latin_1.json\t[&quot;E9&quot;] <\/code><\/pre>\n<p>  <b>\u041c\u0430\u0440\u043a\u0435\u0440 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u0430\u0439\u0442\u043e\u0432 (Byte Order Mark).<\/b> \u0425\u043e\u0442\u044f \u0432 <a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-8.1\">\u0440\u0430\u0437\u0434\u0435\u043b\u0435 8.1<\/a> \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043e: \u00ab\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u041d\u0415 \u0414\u041e\u041b\u0416\u041d\u042b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u0430\u0440\u043a\u0435\u0440 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u0430\u0439\u0442\u043e\u0432 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e JSON-\u0442\u0435\u043a\u0441\u0442\u0430\u00bb, \u043f\u043e\u0442\u043e\u043c \u043c\u044b \u0432\u0438\u0434\u0438\u043c: \u00ab\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u2026 \u041c\u041e\u0413\u0423\u0422 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043c\u0430\u0440\u043a\u0435\u0440\u0430, \u0430 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a \u043e\u0448\u0438\u0431\u043a\u0443\u00bb.<\/p>\n<p>  \u0421\u0431\u043e\u0439\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u043b\u0438\u0448\u044c \u043e\u0442\u043c\u0435\u0442\u043a\u0438 \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 UTF-8, \u0431\u0435\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u0422\u0435\u0441\u0442\u044b, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f UTF-8 BOM \u0441 UTF-8 \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 UTF-8 BOM \u0441 UTF-16 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0438 UTF-16 BOM \u0441 UTF-8 \u0441\u0442\u0440\u043e\u043a\u043e\u0439.<\/p>\n<pre><code class=\"html\">n_structure_UTF8_BOM_no_data.json\tEFBBBF n_structure_incomplete_UTF8_BOM.json\tEFBB{} i_structure_UTF-8_BOM_empty_object.json\tEFBBBF{} <\/code><\/pre>\n<p>  <b>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b<\/b> \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043a\u0430\u043a <code>U+0000<\/code> \u0432 \u0432\u0438\u0434\u0435 <code>U+001F<\/code> (<a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-7\">\u0440\u0430\u0437\u0434\u0435\u043b 7<\/a>). \u0421\u044e\u0434\u0430 \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0441\u0438\u043c\u0432\u043e\u043b 0x7F DEL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 (\u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b 4.6, Bash JSON.sh). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0435\u0441\u0442\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0439\u0442\u0438 <code>[&quot;7F&quot;]<\/code>.<\/p>\n<pre><code class=\"html\">n_string_unescaped_ctrl_char.json\t[&quot;a\\09a&quot;] y_string_unescaped_char_delete.json\t[&quot;7F&quot;] n_string_escape_x.json\t[&quot;\\x00&quot;] <\/code><\/pre>\n<p>  <b>\u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/b> \u00ab\u0412\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u044b\u00bb (<a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-7\">\u0440\u0430\u0437\u0434\u0435\u043b 7<\/a>), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \\uXXXX. \u041d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u2014 \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0441\u043b\u0435\u0448 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u2014 \u0414\u041e\u041b\u0416\u041d\u042b \u0431\u044b\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u044b. \u0412 \u0441\u0431\u043e\u0439\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u043c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041f\u0440\u0438\u043c\u0435\u0440\u044b: <code>[&quot;\\&quot;]<\/code>, <code>[&quot;\\<\/code>, <code>[\\<\/code>.<\/p>\n<pre><code class=\"html\">y_string_allowed_escapes.json\t[&quot;\\&quot;\\\\\/\\b\\f\\n\\r\\t&quot;] n_structure_bad_escape.json\t[&quot;\\ <\/code><\/pre>\n<p>  \u0421\u0438\u043c\u0432\u043e\u043b \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a (codepoints) \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 (Basic Multilingual Plane, BMP) (<code>\\u005C<\/code>). \u0423\u0441\u043f\u0435\u0448\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b (zero character) <code>\\u0000<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c \u0432 \u043f\u0430\u0440\u0441\u0435\u0440\u0430\u0445 \u043d\u0430 \u0421. \u0421\u0431\u043e\u0439\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u0443\u044e U <code>\\U005C<\/code>, \u043d\u0435\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>\\u123Z<\/code> \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u043c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c <code>\\u123<\/code>.<\/p>\n<pre><code class=\"html\">y_string_backslash_and_u_escaped_zero.json\t[&quot;\\u0000&quot;] n_string_invalid_unicode_escape.json\t[&quot;\\uqqqq&quot;] n_string_incomplete_escaped_character.json\t[&quot;\\u00A&quot;] <\/code><\/pre>\n<p>  <b>\u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 Unicode-\u0441\u0438\u043c\u0432\u043e\u043b\u044b<\/b><\/p>\n<p>  \u041a\u043e\u0434\u043e\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432\u043d\u0435 BMP \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u0430\u043c\u0438 \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 UTF-16: <code>+1D11E<\/code> \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f <code>\\uD834\\uDD1E<\/code>. \u0423\u0441\u043f\u0435\u0448\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0435 \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u044b \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f JSON-\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438. <a href=\"https:\/\/www.rfc-editor.org\/errata_search.php?rfc=7159&amp;eid=3984\">\u041e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 3984<\/a> \u0432 RFC 7159 \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f Unicode-\u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 (<code>\\uDEAD<\/code>), \u0438\u043b\u0438 \u043d\u0435\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0441 <code>U+FDD0<\/code> \u043f\u043e <code>U+10FFFE<\/code>.<\/p>\n<p>  \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u0411\u044d\u043a\u0443\u0441\u0430 \u2014 \u041d\u0430\u0443\u0440\u0430 (ABNF, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Augmented_Backus%E2%80%93Naur_form\">Augmented Backus \u2014 Naur form<\/a>) \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 Unicode \u043a\u043e\u0434\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a (\u0440\u0430\u0437\u0434\u0435\u043b 7) \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f Unicode (\u0440\u0430\u0437\u0434\u0435\u043b 1).<\/p>\n<p>  \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043e \u00ab\u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u0438\u00bb (<a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-8.2\">RFC 7159, \u0440\u0430\u0437\u0434\u0435\u043b 8.2<\/a>) \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0414\u041e\u041b\u0416\u041d\u042b \u043f\u0430\u0440\u0441\u0438\u0442\u044c u-\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c. \u0412 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 <code>i_<\/code> (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438). \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 Unicode, \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b \u0437\u0430\u043c\u0435\u043d\u044b <code>U+FFFD REPLACEMENT CHARACTER<\/code>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u043e <a href=\"http:\/\/seriot.ch\/resources\/talks_papers\/i_love_unicode_softshake.pdf\">\u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e Unicode<\/a>, \u0442\u043e \u0432\u0430\u0441 \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0442, \u0447\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0430 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u043a \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0438 \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 (\u0441\u043c. <a href=\"http:\/\/unicode.org\/review\/pr-121.html\">Unicode PR #121: \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 \u0434\u043b\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0437\u0430\u043c\u0435\u043d\u044b<\/a>). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0434\u043d\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0437\u0430\u043c\u0435\u043d\u044b, \u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0438\u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u043d\u0435 Unicode-\u0441\u0438\u043c\u0432\u043e\u043b (\u0441\u043c. <a href=\"#5\">\u0440\u0430\u0437\u0434\u0435\u043b 5 \u2014 \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/a>).<\/p>\n<pre><code class=\"html\">y_string_accepted_surrogate_pair.json\t[&quot;\\uD801\\udc37&quot;] n_string_incomplete_escaped_character.json\t[&quot;\\u00A&quot;] i_string_incomplete_surrogates_escape_valid.json\t[&quot;\\uD800\\uD800\\n&quot;] i_string_lone_second_surrogate.json\t[&quot;\\uDFAA&quot;] i_string_1st_valid_surrogate_2nd_invalid.json\t[&quot;\\uD888\\u1234&quot;] i_string_inverted_surrogates_U+1D11E.json\t[&quot;\\uDd1e\\uD834&quot;] <\/code><\/pre>\n<p>  <b>\u041e\u0431\u044b\u0447\u043d\u044b\u0435 (raw) \u043d\u0435 Unicode-\u0441\u0438\u043c\u0432\u043e\u043b\u044b<\/b><\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u043d\u0435 Unicode \u2014 \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 (<code>\\uDEAD<\/code>). \u042d\u0442\u0438 \u0442\u043e\u0447\u043a\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c Unicode \u0432 u-\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u043d\u043e \u043d\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 Unicode-\u0441\u0438\u043c\u0432\u043e\u043b\u044b.<\/p>\n<p>  \u041f\u0430\u0440\u0441\u0435\u0440\u044b \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0431\u0430\u0439\u0442\u044b, \u043d\u0435 \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u0435 Unicode-\u0441\u0438\u043c\u0432\u043e\u043b\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 UTF-8 \u0431\u0430\u0439\u0442 FF \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Unicode-\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0435 FF, \u2014 \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 UTF-8. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0435\u0451 \u043f\u0430\u0440\u0441\u0438\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u00ab\u0421\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c Unicode-\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442 \u043d\u0443\u043b\u044f \u0438 \u0431\u043e\u043b\u0435\u0435\u00bb (<a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-1\">RFC 7159, \u0440\u0430\u0437\u0434\u0435\u043b 1<\/a>) \u0438 \u00abJSON-\u0442\u0435\u043a\u0441\u0442 \u0414\u041e\u041b\u0416\u0415\u041d \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 Unicode\u00bb (<a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-8.1\">RFC 7159, \u0440\u0430\u0437\u0434\u0435\u043b 8.1<\/a>).<\/p>\n<pre><code class=\"html\">y_string_utf8.json\t[&quot;\u20ac?&quot;] n_string_invalid_utf-8.json\t[&quot;FF&quot;] n_array_invalid_utf8.json\t[FF] <\/code><\/pre>\n<p>  <b>\u0414\u0432\u0443\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 RFC 7159<\/b><\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u043f\u0430\u0440\u0441\u0435\u0440 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c RFC 7159, \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0432 <a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-9\">\u0440\u0430\u0437\u0434\u0435\u043b\u0435 9<\/a>:<\/p>\n<blockquote><p>JSON-\u043f\u0430\u0440\u0441\u0435\u0440 \u0414\u041e\u041b\u0416\u0415\u041d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0435\u043a\u0441\u0442\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 JSON. JSON-\u043f\u0430\u0440\u0441\u0435\u0440 \u041c\u041e\u0416\u0415\u0422 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043d\u0435 JSON \u0444\u043e\u0440\u043c\u044b \u0438\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p><\/blockquote>\n<p>  \u041f\u043e\u043a\u0430 \u0432\u0441\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0412\u0441\u0435 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0414\u041e\u041b\u0416\u041d\u042b \u043f\u0430\u0440\u0441\u0438\u0442\u044c\u0441\u044f, \u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0441\u0430\u043c\u0438 \u0440\u0435\u0448\u0430\u0442\u044c, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442.<\/p>\n<blockquote><p>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430;<\/li>\n<li>\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438;<\/li>\n<li>\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0447\u0438\u0441\u0435\u043b;<\/li>\n<li>\u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438 \u0438\u0445 \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.<\/li>\n<\/ul>\n<\/blockquote>\n<p>  \u0412\u0441\u0435 \u044d\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u0447\u0430\u0442 \u0440\u0430\u0437\u0443\u043c\u043d\u043e (\u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432), \u043d\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0430\u0442 \u0441\u043b\u043e\u0432\u0443 \u00ab\u0414\u041e\u041b\u0416\u0415\u041d\u00bb \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0446\u0438\u0442\u0430\u0442\u044b. <a href=\"https:\/\/tools.ietf.org\/html\/rfc2119\">RFC 2119<\/a> \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u044f\u0441\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/p>\n<blockquote><p>\u0414\u041e\u041b\u0416\u0415\u041d. \u042d\u0442\u043e \u0441\u043b\u043e\u0432\u043e, \u043a\u0430\u043a \u0438 \u00ab\u0422\u0420\u0415\u0411\u0423\u0415\u0422\u0421\u042f\u00bb \u0438\u043b\u0438 \u00ab\u0421\u041b\u0415\u0414\u0423\u0415\u0422\u00bb, \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/p><\/blockquote>\n<p>  RFC 7159 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u043d\u043e \u043d\u0435 \u0437\u0430\u0434\u0430\u0451\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0430\u0440\u0441\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u0442\u0440\u0451\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0432\u0441\u0451 \u0435\u0449\u0451 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c RFC 7159.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 9 RFC 7159 \u043e\u0442 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u044f\u0441\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438\/\u0438\u043b\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041d\u043e \u044d\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c \u0441 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u0445.<\/p>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u0438\u043a\u0438 \u043d\u0430 \u0444\u043e\u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u043e\u0447\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u043f\u0430\u0440\u0441\u0435\u0440 RFC 7159. \u0412\u0435\u0434\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 (\u044d\u0442\u043e \u00ab\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u00bb), \u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 (\u044d\u0442\u043e \u00ab\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u00bb \u043f\u0430\u0440\u0441\u0435\u0440\u0430).<\/p>\n<p>  <a name=\"3\"><\/a><\/p>\n<h1>3. \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/h1>\n<p>  \u042f \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u043e\u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u043f\u0430\u0440\u0441\u0435\u0440\u044b, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0435\u0431\u044f \u0432\u0435\u0441\u0442\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u0440\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e JSON-\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b \u0432\u0441\u0451 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u043c \u0441\u0432\u043e\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f Cocoa-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 Swift \u0438 Objective-C. \u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u043d\u0430 C, Python, Ruby, R, Lua, Perl, Bash \u0438 Rust. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u044f \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043e\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0443 \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 \u044f\u0437\u044b\u043a\u0438.<\/p>\n<p>  \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0441\u043b\u0430\u0431\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Unicode \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u042f \u0441\u0442\u0440\u0435\u043c\u0438\u043b\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0441\u0435\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043b\u0438\u0436\u0435 \u043a \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u043e\u0433\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 RFC 7159.<\/p>\n<p>  Python-\u0441\u043a\u0440\u0438\u043f\u0442 <code>run_tests.py<\/code> \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u043b \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b (\u0438\u043b\u0438 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0439 \u0442\u0435\u0441\u0442, \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430). \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0431\u044b\u043b\u0438 \u0432 \u043e\u0431\u0451\u0440\u0442\u043a\u0430\u0445 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0438 0 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430 \u0438 1 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430. \u0411\u044b\u043b \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u0434\u043b\u044f \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0441\u0435\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u2014 5 \u0441\u0435\u043a\u0443\u043d\u0434. \u041f\u043e \u0441\u0443\u0442\u0438, \u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b JSON-\u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0432 JSON-\u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u044b.<\/p>\n<p>  <code>run_tests.py<\/code> \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0442\u0435\u0441\u0442\u0443 \u0441 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c, \u043e\u0442\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u043c \u0432 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0435 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430. \u0415\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438 \u0438\u043b\u0438 \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0431\u044b\u043b <code>i<\/code> (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438), <code>run_tests.py<\/code> \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u0432 \u0436\u0443\u0440\u043d\u0430\u043b (<code>results\/logs.txt<\/code>) \u0441\u0442\u0440\u043e\u043a\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430:<\/p>\n<pre><code class=\"bash\">Python 2.7.10   SHOULD_HAVE_FAILED  n_number_infinity.json <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8d0\/d07\/925\/8d0d079252ee4f3cafdb500c72b6adb8.png\"\/><\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c <code>run_tests.py<\/code> \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b \u0436\u0443\u0440\u043d\u0430\u043b \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b HTML-\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 (<code>results\/parsing.html<\/code>).<\/p>\n<p>  \u0412 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432. \u041f\u0430\u0440\u0441\u0435\u0440\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u0445. \u0414\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0440\u0430\u0437\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u044f\u0447\u0435\u0435\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/2a9\/0e8\/a64\/2a90e8a6419844199ac81a134de84298.png\"\/><\/p>\n<p>  \u0422\u0435\u0441\u0442\u044b \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c. \u042d\u0442\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0441\u0445\u043e\u0436\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/db3\/b13\/190\/db3b131900c7458ba993d735c7a85d45.png\"\/><\/p>\n<p>  <a name=\"4\"><\/a><\/p>\n<h1>4. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438<\/h1>\n<p>  <a name=\"41\"><\/a><\/p>\n<h3>4.1. \u041f\u043e\u043b\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h3>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c: <a href=\"http:\/\/seriot.ch\/json\/parsing.html\">seriot.ch\/json\/parsing.html<\/a>. \u0422\u0435\u0441\u0442\u044b \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e \u0441\u0445\u043e\u0436\u0435\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u0412 <code>run_tests.py<\/code> \u0435\u0441\u0442\u044c \u043e\u043f\u0446\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u00ab\u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b\u00bb (pruned results): \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u0441\u0442\u043e\u0432 \u0434\u0430\u0451\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u0441\u0442. \u0424\u0430\u0439\u043b \u0441 \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u0443\u0442: <a href=\"http:\/\/www.seriot.ch\/json\/parsing_pruned.html\">www.seriot.ch\/json\/parsing_pruned.html<\/a>.<\/p>\n<p>  \u041f\u0430\u0434\u0435\u043d\u0438\u044f (\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0446\u0432\u0435\u0442) \u2014 \u0441\u0430\u043c\u0430\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u043d\u0435\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u0435\u0442 \u0440\u0438\u0441\u043a\u0443 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u0422\u0435\u0441\u0442\u044b \u00ab\u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u00bb (\u043a\u043e\u0440\u0438\u0447\u043d\u0435\u0432\u044b\u0439 \u0446\u0432\u0435\u0442) \u0442\u0430\u043a\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u044b: \u043d\u0435\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0434\u0430\u0442\u044c \u043e\u0442\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442. \u041c\u0435\u043d\u0435\u0435 \u043e\u043f\u0430\u0441\u043d\u044b \u0442\u0435\u0441\u0442\u044b \u00ab\u043e\u0436\u0438\u0434\u0430\u043b\u0441\u044f \u0441\u0431\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u00bb (\u0436\u0451\u043b\u0442\u044b\u0439 \u0446\u0432\u0435\u0442). \u041e\u043d\u0438 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e \u00ab\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0445\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u043f\u0430\u0440\u0441\u0438\u0442\u044c. \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u0441\u0451 \u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043f\u0430\u0440\u0441\u0435\u0440 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0451\u043d \u0434\u0440\u0443\u0433\u0438\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u044d\u0442\u0438 \u00ab\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u00bb.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/16d\/94a\/dc6\/16d94adc60684329940dcd02adcd3e20.png\"\/><\/p>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u0438 \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e \u0441\u0430\u043c\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<p>  <a name=\"42\"><\/a><\/p>\n<h3>4.2. C-\u043f\u0430\u0440\u0441\u0435\u0440\u044b<\/h3>\n<p>  \u042f \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u044f\u0442\u044c C-\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/zserge\/jsmn\">github.com\/zserge\/jsmn<\/a> <\/li>\n<li><a href=\"https:\/\/github.com\/akheron\/jansson\">github.com\/akheron\/jansson<\/a> <\/li>\n<li><a href=\"https:\/\/github.com\/rustyrussell\/ccan\">github.com\/rustyrussell\/ccan<\/a> <\/li>\n<li><a href=\"https:\/\/github.com\/DaveGamble\/cJSON\">github.com\/DaveGamble\/cJSON<\/a> <\/li>\n<li><a href=\"https:\/\/github.com\/udp\/json-parser\">github.com\/udp\/json-parser<\/a><\/li>\n<\/ul>\n<p>  \u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/09b\/dca\/f67\/09bdcaf676a14697b25767f6edbb6c18.png\"\/><\/p>\n<p>  \u0411\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043e\u043b\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.<\/p>\n<p>  <a name=\"43\"><\/a><\/p>\n<h3>4.3. Objective-C-\u043f\u0430\u0440\u0441\u0435\u0440\u044b<\/h3>\n<p>  \u042f \u0432\u044b\u0431\u0440\u0430\u043b \u0442\u0440\u0438 Objective-C-\u043f\u0430\u0440\u0441\u0435\u0440\u0430, \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043d\u0430 \u0437\u0430\u0440\u0435 iOS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e Apple \u0434\u043e iOS 5 \u043d\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043b\u0430 NSJSONSerialization. \u0412\u0441\u0435 \u0442\u0440\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/johnezang\/JSONKit\">github.com\/johnezang\/JSONKit<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/TouchCode\/TouchJSON\">github.com\/TouchCode\/TouchJSON<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/stig\/json-framework\">github.com\/stig\/json-framework<\/a> aka SBJSON<\/li>\n<\/ul>\n<p>  \u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/4b0\/d9a\/ced\/4b0d9acedc0549868897dd61e46c7916.png\"\/><\/p>\n<p>  SBJSON \u0432\u044b\u0436\u0438\u043b \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f NSJSONSerialization, \u043e\u043d \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 CocoaPods. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 <a href=\"https:\/\/github.com\/stig\/json-framework\/issues\/219\">\u0437\u0430\u044f\u0432\u043a\u0435 #219<\/a> \u044f \u0437\u0430\u0440\u0435\u043f\u043e\u0440\u0442\u0438\u043b \u043f\u0430\u0434\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0430\u0440\u0441\u0438\u043b \u043d\u0435 UTF-8 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 [\u00abFF\u00bb].<\/p>\n<pre><code class=\"bash\">*** Assertion failure in -[SBJson4Parser parserFound:isValue:], SBJson4Parser.m:150 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: obj' *** First throw call stack: (     0   CoreFoundation                      0x00007fff95f4b4f2 __exceptionPreprocess + 178     1   libobjc.A.dylib                     0x00007fff9783bf7e objc_exception_throw + 48     2   CoreFoundation                      0x00007fff95f501ca +[NSException raise:format:arguments:] + 106     3   Foundation                          0x00007fff9ce86856 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 198     4   test_SBJSON                         0x00000001000067e5 -[SBJson4Parser parserFound:isValue:] + 309     5   test_SBJSON                         0x00000001000073f3 -[SBJson4Parser parserFoundString:] + 67     6   test_SBJSON                         0x0000000100004289 -[SBJson4StreamParser parse:] + 2377     7   test_SBJSON                         0x0000000100007989 -[SBJson4Parser parse:] + 73     8   test_SBJSON                         0x0000000100005d0d main + 221     9   libdyld.dylib                       0x00007fff929ea5ad start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException <\/code><\/pre>\n<p>  <a name=\"44\"><\/a><\/p>\n<h3>4.4. Apple (NS)JSONSerialization<\/h3>\n<p>  <a href=\"https:\/\/developer.apple.com\/reference\/foundation\/nsjsonserialization\">developer.apple.com\/reference\/foundation\/nsjsonserialization<\/a><\/p>\n<p>  NSJSONSerialization \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0441 iOS 5, \u0438 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 JSON-\u043f\u0430\u0440\u0441\u0435\u0440 \u043d\u0430 OS X \u0438 iOS. \u041e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 Objective-C \u0438 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Swift: <a href=\"https:\/\/github.com\/apple\/swift-corelibs-foundation\/blob\/master\/Foundation\/NSJSONSerialization.swift\">NSJSONSerialization.swift<\/a>. \u0412 Swift 3 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 NS <a href=\"https:\/\/github.com\/apple\/swift-corelibs-foundation\/commit\/b914527d4d560602afc90da29254e1f1571672dd#diff-959321c08d3a9f8d385f2daca75a80b2\">\u043e\u0442\u0431\u0440\u043e\u0441\u0438\u043b\u0438<\/a>.<\/p>\n<p>  <b>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/b><\/p>\n<p>  \u0423 JSONSerialization \u0435\u0441\u0442\u044c \u043d\u0435\u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\u041e\u043d \u043d\u0435 \u043f\u0430\u0440\u0441\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0447\u0438\u0441\u043b\u0430: <code>[123123e100000]<\/code><\/li>\n<li>\u041e\u043d \u043d\u0435 \u043f\u0430\u0440\u0441\u0438\u0442 u-\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438: <code>[&quot;\\ud800&quot;]<\/code><\/li>\n<\/ul>\n<p>  \u0423 JSONSerialization \u0435\u0441\u0442\u044c \u043d\u0435\u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\u041e\u043d \u043f\u0430\u0440\u0441\u0438\u0442 \u0437\u0430\u043c\u044b\u043a\u0430\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u044f\u0442\u044b\u0435: <code>[1,]<\/code> \u0438 <code>{&quot;a&quot;:0,}<\/code><\/li>\n<\/ul>\n<p>  \u0421\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u043c \u044f \u0441\u0447\u0438\u0442\u0430\u044e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0435 \u0441 \u043a\u043e\u0434\u043e\u0432\u044b\u043c\u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u0430. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u043d\u0435\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0441\u0431\u043e\u044e \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430.<\/p>\n<p>  <b>\u041f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/b><\/p>\n<p>  \u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e JSON-\u043f\u0430\u0440\u0441\u0438\u043d\u0433, \u0430 \u043d\u0435 JSON-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u041d\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043f\u0440\u043e \u044d\u0442\u043e \u043f\u0430\u0434\u0435\u043d\u0438\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 JSONSerialization \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b <code>Double.nan<\/code>. \u041a\u0430\u043a \u0432\u044b \u043f\u043e\u043c\u043d\u0438\u0442\u0435, <code>NaN<\/code> \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 JSON, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 JSONSerialization \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0432\u044b\u0434\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u0430 \u043d\u0435 \u043e\u0431\u0440\u0443\u0448\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<pre><code class=\"javascript\">do {     let a = [Double.nan]     let data = try JSONSerialization.data(withJSONObject: a, options: []) } catch let e { }  SIGABRT  *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid number value (NaN) in JSON write' <\/code><\/pre>\n<p>  <a name=\"45\"><\/a><\/p>\n<h3>4.5. Freddy (Swift)<\/h3>\n<p>  Freddy (https:\/\/github.com\/bignerdranch\/Freddy) \u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 JSON-\u043f\u0430\u0440\u0441\u0435\u0440, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Swift 3. \u042f \u0433\u043e\u0432\u043e\u0440\u044e \u00ab\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439\u00bb, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e GitHub-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0437\u0430\u044f\u0432\u043b\u044f\u044e\u0442 \u0441\u0435\u0431\u044f \u043a\u0430\u043a Swift JSON-\u043f\u0430\u0440\u0441\u0435\u0440\u044b, \u0445\u043e\u0442\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Apple JSONSerialization \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0430\u043f\u044f\u0442 JSON-\u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442-\u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>  Freddy \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 Cocoa-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0442\u0438\u043f\u043e\u0432 Swift \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Swift-\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u0445 JSON-\u0443\u0437\u043b\u043e\u0432 (Array, Dictionary, Double, Int, String, Bool \u0438 Null).<\/p>\n<p>  \u041d\u043e Freddy <a href=\"https:\/\/www.bignerdranch.com\/blog\/introducing-freddy-an-open-source-framework-for-parsing-json-in-swift\">\u0432\u044b\u043f\u0443\u0449\u0435\u043d \u0432 \u044f\u043d\u0432\u0430\u0440\u0435 2016-\u0433\u043e<\/a>, \u043e\u043d \u0435\u0449\u0451 \u043c\u043e\u043b\u043e\u0434 \u0438 \u0437\u0430\u0431\u0430\u0433\u043e\u0432\u0430\u043d. \u041c\u043e\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b, \u0447\u0442\u043e \u043f\u0430\u0440\u0441\u0435\u0440 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u043d\u0435\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445 \u0432\u0440\u043e\u0434\u0435 <code>[1<\/code>, \u0438 <code>{&quot;a&quot;:<\/code>, \u0438 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u0435\u043b\u0430 &quot; &quot;. \u042f \u043e\u0442\u043a\u0440\u044b\u043b <a href=\"https:\/\/github.com\/bignerdranch\/Freddy\/issues\/199\">\u0437\u0430\u044f\u0432\u043a\u0443 #199<\/a>, \u0438 \u0431\u0430\u0433 \u043f\u043e\u0444\u0438\u043a\u0441\u0438\u043b\u0438 \u0437\u0430 \u043e\u0434\u0438\u043d \u0434\u0435\u043d\u044c!<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e <code>&quot;0e1&quot;<\/code> \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u043c, \u043e \u0447\u0451\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0432 <a href=\"https:\/\/github.com\/bignerdranch\/Freddy\/issues\/198\">\u0437\u0430\u044f\u0432\u043a\u0435 #198<\/a>, \u0438 \u044d\u0442\u043e\u0442 \u0431\u0430\u0433 \u0442\u043e\u0436\u0435 \u043f\u043e\u0444\u0438\u043a\u0441\u0438\u043b\u0438 \u0437\u0430 \u043e\u0434\u0438\u043d \u0434\u0435\u043d\u044c.<\/p>\n<p>  \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043d\u0430 18 \u043e\u043a\u0442\u044f\u0431\u0440\u044f Freddy \u0432\u0441\u0451 \u0435\u0449\u0451 \u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u0440\u0438 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0435 <code>[&quot;<\/code><code>\\<\/code>. \u041e \u0431\u0430\u0433\u0435 \u044f \u0441\u043e\u043e\u0431\u0449\u0438\u043b \u0432 <a href=\"https:\/\/github.com\/bignerdranch\/Freddy\/issues\/206\">\u0437\u0430\u044f\u0432\u043a\u0435 #206<\/a>.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0430 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f Freddy:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/626\/13d\/e98\/62613de98e0b46b4b8d670e1fe2dd0d0.png\"\/><\/p>\n<p>  <a name=\"46\"><\/a><\/p>\n<h3>4.6. Bash JSON.sh<\/h3>\n<p>  \u042f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b <a href=\"https:\/\/github.com\/dominictarr\/JSON.sh\/\">github.com\/dominictarr\/JSON.sh<\/a>, \u0432\u0435\u0440\u0441\u0438\u044e \u043e\u0442 12 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 2016 \u0433\u043e\u0434\u0430.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u043c Bash-\u043f\u0430\u0440\u0441\u0435\u0440\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0437\u0430 \u043f\u043e\u0438\u0441\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e RFC 7159, \u0414\u041e\u041b\u0416\u041d\u042b \u0431\u044b\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u043b\u0435\u0448\u0435\u0439. \u041d\u043e \u0443 Bash \u0438 JSON \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b.<\/p>\n<p>  \u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 <code>:cntlr:<\/code>. \u042d\u0442\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 <code>[\\x00-\\x1F\\x7F]<\/code>. \u041d\u043e \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438 JSON <code>0x7F DEL<\/code> \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c \u0438 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<pre><code class=\"html\"> 00 nul   01 soh   02 stx   03 etx   04 eot   05 enq   06 ack   07 bel  08 bs    09 ht    0a nl    0b vt    0c np    0d cr    0e so    0f si  10 dle   11 dc1   12 dc2   13 dc3   14 dc4   15 nak   16 syn   17 etb  18 can   19 em    1a sub   1b esc   1c fs    1d gs    1e rs    1f us  20 sp    21  !    22  &quot;    23  #    24  $    25  %    26  &    27  '  28  (    29  )    2a  *    2b  +    2c  ,    2d  \u2014    2e  .    2f  \/  30  0    31  1    32  2    33  3    34  4    35  5    36  6    37  7  38  8    39  9    3a  :    3b  ;    3c  &lt;    3d  =    3e  &gt;    3f  ?  40  @    41  A    42  B    43  C    44  D    45  E    46  F    47  G  48  H    49  I    4a  J    4b  K    4c  L    4d  M    4e  N    4f  O  50  P    51  Q    52  R    53  S    54  T    55  U    56  V    57  W  58  X    59  Y    5a  Z    5b  [    5c  \\    5d  ]    5e  ^    5f  _  60  `    61  a    62  b    63  c    64  d    65  e    66  f    67  g  68  h    69  i    6a  j    6b  k    6c  l    6d  m    6e  n    6f  o  70  p    71  q    72  r    73  s    74  t    75  u    76  v    77  w  78  x    79  y    7a  z    7b  {    7c  |    7d  }    7e  ~    7f del <\/code><\/pre>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 JSON.sh \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0430\u0440\u0441\u0438\u0442\u044c <code>[&quot;7F&quot;]<\/code>. \u042f <a href=\"https:\/\/github.com\/dominictarr\/JSON.sh\/issues\/46\">\u0437\u0430\u0440\u0435\u043f\u043e\u0440\u0442\u0438\u043b<\/a> \u044d\u0442\u043e\u0442 \u0431\u0430\u0433. \u0422\u0430\u043a\u0436\u0435 JSON.sh \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u0440\u0438 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0435 10 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 [. \u041e\u0431 \u044d\u0442\u043e\u043c \u044f \u0442\u043e\u0436\u0435 <a href=\"https:\/\/github.com\/dominictarr\/JSON.sh\/issues\/47\">\u0441\u043e\u043e\u0431\u0449\u0438\u043b<\/a>. <\/p>\n<pre><code class=\"bash\">$ python -c &quot;print('['*100000)&quot; | .\/JSON.sh  .\/JSON.sh: line 206: 40694 Done                    tokenize      40695 Segmentation fault: 11  | parse <\/code><\/pre>\n<p>  <a name=\"47\"><\/a><\/p>\n<h3>4.7. \u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b<\/h3>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e C \/ Objective-C \u0438 Swift, \u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439. \u0412\u043e\u0442 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0441 \u0432\u044b\u0431\u043e\u0440\u043a\u043e\u0439 \u0438\u0437 <a href=\"http:\/\/seriot.ch\/json\/parsing.html\">\u043f\u043e\u043b\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a>. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0435 \u043d\u0430\u0439\u0434\u0451\u0442\u0441\u044f \u0438 \u0434\u0432\u0443\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u043e \u043c\u043d\u0435\u043d\u0438\u0438, \u0447\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u0447\u0442\u043e \u043f\u043b\u043e\u0445\u043e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/121\/a04\/0b2\/121a040b2bec4f6f823b82140f2116d4.png\"\/><\/p>\n<p>  \u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b:<\/p>\n<ul>\n<li>Lua JSON 20160728.17 <a href=\"http:\/\/regex.info\/blog\/lua\/json\">regex.info\/blog\/lua\/json<\/a> (\u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0439\u0442\u0435\u0441\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435)<\/li>\n<li>Lua dkjson 2.5.1 <a href=\"https:\/\/github.com\/LuaDist\/dkjson\">github.com\/LuaDist\/dkjson<\/a><\/li>\n<li>Go 1.7.1, json mobule <a href=\"https:\/\/golang.org\/pkg\/encoding\/json\/\">golang.org\/pkg\/encoding\/json<\/a><\/li>\n<li>Python 2.7.10, json module <a href=\"https:\/\/docs.python.org\/2.7\/library\/json.html\">docs.python.org\/2.7\/library\/json.html<\/a><\/li>\n<li>JavaScript, macOS 10.12<\/li>\n<li>Perl JSON <a href=\"https:\/\/metacpan.org\/pod\/JSON\">metacpan.org\/pod\/JSON<\/a><\/li>\n<li>Perl JSON::XS <a href=\"https:\/\/metacpan.org\/pod\/JSON\">metacpan.org\/pod\/JSON<\/a>::XS<\/li>\n<li>PHP 5.6.24, macOS 10.12<\/li>\n<li>R rjson <a href=\"https:\/\/cran.r-project.org\/web\/packages\/rjson\/index.html\">cran.r-project.org\/web\/packages\/rjson\/index.html<\/a><\/li>\n<li>R jsonlite <a href=\"https:\/\/github.com\/jeroenooms\/jsonlite\">github.com\/jeroenooms\/jsonlite<\/a><\/li>\n<li>Rust json-rust <a href=\"https:\/\/github.com\/maciejhirsz\/json-rust\">github.com\/maciejhirsz\/json-rust<\/a><\/li>\n<li>Rust rustc_serialize::json <a href=\"https:\/\/doc.rust-lang.org\/rustc-serialize\/rustc_serialize\/json\/\">doc.rust-lang.org\/rustc-serialize\/rustc_serialize\/json<\/a><\/li>\n<\/ul>\n<p>  \u041f\u043e \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0441\u044c\u0431\u0430\u043c \u044f \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b Java-\u043f\u0430\u0440\u0441\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u044b \u0432 \u043a\u0440\u0430\u0442\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043f\u043e\u043b\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445:<\/p>\n<ul>\n<li>Java Gson 2.7 <a href=\"https:\/\/github.com\/google\/gson\">github.com\/google\/gson<\/a><\/li>\n<li>Java Jackson 2.8.4 <a href=\"https:\/\/github.com\/FasterXML\/jackson\">github.com\/FasterXML\/jackson<\/a><\/li>\n<li>Java Simple JSON 1.1.1 <a href=\"https:\/\/code.google.com\/archive\/p\/json-simple\/\">code.google.com\/archive\/p\/json-simple<\/a><\/li>\n<\/ul>\n<p>  JSON-\u043c\u043e\u0434\u0443\u043b\u044c Python \u043f\u0430\u0440\u0441\u0438\u0442 <code>NaN<\/code> \u0438 <code>-Infinity<\/code> \u043a\u0430\u043a \u0447\u0438\u0441\u043b\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 \u043e\u043f\u0446\u0438\u0438 parse_constant \u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435. \u041d\u043e \u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u043a\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0435\u0433\u043e \u0432 \u0442\u0435\u0441\u0442\u0430\u0445 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u043f\u0430\u0440\u0441\u0435\u0440\u0443 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u044d\u0442\u0438 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b.<\/p>\n<pre><code class=\"python\">def f_parse_constant(o):     raise ValueError  o = json.loads(data, parse_constant=f_parse_constant) <\/code><\/pre>\n<p>  <a name=\"48\"><\/a><\/p>\n<h3>4.8. JSON Checker<\/h3>\n<p>  JSON-\u043f\u0430\u0440\u0441\u0435\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 JSON-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c JSON, \u0442\u043e \u043f\u0430\u0440\u0441\u0435\u0440 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443.<\/p>\n<p>  \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442 \u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 JSON. \u0422\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u044d\u0442\u043e JSON-\u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u044b.<\/p>\n<p>  \u041e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 \u0421 \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f JSON_Checker. \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0441 <a href=\"http:\/\/www.json.org\/JSON_checker\/\">www.json.org\/JSON_checker<\/a>, \u0438 \u0441 \u043d\u0435\u0439 \u0434\u0430\u0436\u0435 \u0438\u0434\u0451\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 (\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439):<\/p>\n<blockquote><p>JSON_Checker \u2014 \u044d\u0442\u043e pushdown automaton \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c JSON-\u0442\u0435\u043a\u0441\u0442\u0430. \u041e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c. JSON_Checker \u043c\u043e\u0436\u043d\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e JSON-\u043f\u0430\u0440\u0441\u0435\u0440\u0430.<\/p><\/blockquote>\n<p>  \u0425\u043e\u0442\u044f JSON_Checker \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u0432\u0441\u0451 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u0443\u0442\u043e\u0447\u043d\u0438\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f JSON-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442.<\/p>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, JSON_Checker \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0441\u0430\u0439\u0442\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043d \u043f\u0430\u0440\u0441\u0438\u0442 <code>[1.]<\/code>, <code>[0.e1]<\/code>, \u0447\u0442\u043e \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 JSON.<\/p>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, JSON_Checker \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442 <code>[0e1]<\/code>, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0435 JSON-\u0447\u0438\u0441\u043b\u043e. \u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0439 \u0431\u0430\u0433, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0437-\u0437\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0447\u0438\u0441\u043b\u0430 <code>0e1<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d \u0432\u0435\u0441\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442.<\/p>\n<p>  \u042d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 JSON_Checker \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 pushdown automaton \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430, \u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 \u0441\u0445\u0435\u043c\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/05c\/26c\/443\/05c26c4438994d6088f2aa9ad4f383a1.png\"\/><\/p>\n<p>  <b>\u0411\u0430\u0433 1: \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 0e1<\/b>. \u0412 \u043a\u043e\u0434\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e <code>ZE<\/code>, \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 <code>0<\/code>, \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043a <code>E1<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0447\u0442\u0435\u043d\u0438\u044f <code>e<\/code> \u0438\u043b\u0438 <code>E<\/code>. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0434\u0432\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430.<\/p>\n<p>  <b>\u0411\u0430\u0433 2: \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 [1.]<\/b>. \u0412 \u043e\u0434\u043d\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435 <code>0.<\/code>, \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0446\u0438\u0444\u0440\u044b. \u0410 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435 <code>0.1<\/code>, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442. <\/p>\n<p>  JSON_Checker \u0432\u0441\u0451 \u0435\u0449\u0451 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 <code>FR<\/code>, \u0430 \u043d\u0435 \u0434\u0432\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u0437\u0430\u043c\u0435\u043d\u0438\u0432 \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043a\u0440\u0430\u0441\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 <code>FR<\/code> \u043d\u043e\u0432\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c <code>F0<\/code> \u0438\u043b\u0438 <code>frac0<\/code>. \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435 <code>1.<\/code> \u043f\u0430\u0440\u0441\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0446\u0438\u0444\u0440\u0443.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/e46\/373\/1c2\/e463731c2416454a88287dc4d2275281.jpg\"\/><\/p>\n<p>  \u0420\u044f\u0434 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 (Obj-C TouchJSON, PHP, R rjson, Rust json-rust, Bash JSON.sh, C jsmn \u0438 Lua dkjson) \u0442\u043e\u0436\u0435 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u0441\u044f\u0442 <code>[1.]<\/code>. \u041a\u0430\u043a \u044d\u0442\u043e\u0442 \u0431\u0430\u0433 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u043b\u0441\u044f \u0438\u0437 JSON_Checker? \u041f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0438 \u0442\u0435\u0441\u0442\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0435\u0433\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u0430, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u0442\u0441\u044f \u043d\u0430 json.org.<\/p>\n<p>  <a name=\"49\"><\/a><\/p>\n<h3>4.9. \u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h3>\n<p>  \u041c\u043e\u0433\u0443\u0442 \u043b\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 JSON? \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 <a href=\"http:\/\/codegolf.stackexchange.com\/questions\/474\/write-a-json-validator\">\u043f\u043e\u043f\u044b\u0442\u043a\u0443<\/a> \u043d\u0430\u0439\u0442\u0438 \u0441\u0430\u043c\u043e\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u0435\u0437 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0443\u0432\u0435\u043d\u0447\u0430\u043b\u0438\u0441\u044c \u043b\u0438 \u0443\u0441\u043f\u0435\u0445\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u042f \u043d\u0430\u0448\u0451\u043b \u043d\u0430 StackOverflow \u043e\u0434\u043d\u043e \u0438\u0437 \u043b\u0443\u0447\u0448\u0438\u0445 <a href=\"http:\/\/stackoverflow.com\/questions\/2583472\/regex-to-validate-json\">\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Ruby \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 JSON<\/a>:<\/p>\n<pre><code class=\"bash\">JSON_VALIDATOR_RE = \/(     # define subtypes and build up the json syntax, BNF-grammar-style     # The {0} is a hack to simply define them as named groups here but not match on them yet     # I added some atomic grouping to prevent catastrophic backtracking on invalid inputs     (?&lt;number&gt;  -?(?=[1-9]|0(?!\\d))\\d+(\\.\\d+)?([eE][+-]?\\d+)?){0}     (?&lt;boolean&gt; true | false | null ){0}     (?&lt;string&gt;  &quot; (?&gt;[^&quot;\\\\\\\\]* | \\\\\\\\ [&quot;\\\\\\\\bfnrt\\\/] | \\\\\\\\ u [0-9a-f]{4} )* &quot; ){0}     (?&lt;array&gt;   \\[ (?&gt; \\g&lt;json&gt; (?: , \\g&lt;json&gt; )* )? \\s* \\] ){0}     (?&lt;pair&gt;    \\s* \\g&lt;string&gt; \\s* : \\g&lt;json&gt; ){0}     (?&lt;object&gt;  \\{ (?&gt; \\g&lt;pair&gt; (?: , \\g&lt;pair&gt; )* )? \\s* \\} ){0}     (?&lt;json&gt;    \\s* (?&gt; \\g&lt;number&gt; | \\g&lt;boolean&gt; | \\g&lt;string&gt; | \\g&lt;array&gt; | \\g&lt;object&gt; ) \\s* ){0}     )     \\A \\g&lt;json&gt; \\Z     \/uix <\/code><\/pre>\n<p>  \u041e\u043d\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 JSON, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>u-\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435: <code>[&quot;\\u002c&quot;]<\/code><\/li>\n<li>\u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0441\u043b\u0435\u0448, \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u0441\u043b\u0435\u0448\u0435\u043c: <code>[&quot;\\\\a&quot;]<\/code><\/li>\n<\/ul>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043e\u043d\u043e \u043f\u0430\u0440\u0441\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f (\u0430 \u044d\u0442\u043e \u0431\u0430\u0433 \u0434\u043b\u044f JSON-\u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u0430):<\/p>\n<ul>\n<li>True \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b: <code>[True]<\/code><\/li>\n<li>\u043d\u0435\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b: <code>[&quot;09&quot;]<\/code><\/li>\n<\/ul>\n<p>  <a name=\"5\"><\/a><\/p>\n<h1>5. \u041a\u043e\u043d\u0442\u0435\u043d\u0442 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/h1>\n<p>  \u0412 <a href=\"https:\/\/tools.ietf.org\/html\/rfc7159#section-9\">RFC 7159 (\u0440\u0430\u0437\u0434\u0435\u043b 9)<\/a> \u0441\u043a\u0430\u0437\u0430\u043d\u043e:<\/p>\n<blockquote><p>JSON-\u043f\u0430\u0440\u0441\u0435\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 JSON-\u0442\u0435\u043a\u0441\u0442 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435.<\/p><\/blockquote>\n<p>  \u0412\u0441\u044f \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043b\u0438\u0448\u044c \u043e \u0442\u043e\u043c, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u043f\u0430\u0440\u0441\u0435\u0440 \u043f\u0430\u0440\u0441\u0438\u0442\u044c JSON-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043a\u0438 \u043e\u0442\u043f\u0430\u0440\u0441\u0438\u0442\u044c u-\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 Unicode-\u0441\u0438\u043c\u0432\u043e\u043b (<code>&quot;\\uDEAD&quot;<\/code>), \u043d\u043e \u043a\u0430\u043a\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442? \u0421\u0438\u043c\u0432\u043e\u043b \u0437\u0430\u043c\u0435\u043d\u044b \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435? \u0412 RFC 7159 \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438 \u0441\u043b\u043e\u0432\u0430.<\/p>\n<p>  \u0410 \u0447\u0442\u043e \u043d\u0430\u0441\u0447\u0451\u0442 \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432\u0440\u043e\u0434\u0435 <code>0.00000000000000000000001<\/code> \u0438 <code>-0<\/code>? \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0430\u0440\u0441\u0438\u0442\u044c, \u043d\u043e \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c? RFC 7159 \u043d\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u0438\u043b\u0438 0 \u0438 \u20130. \u0422\u0430\u043c \u0434\u0430\u0436\u0435 \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>  \u0418\u043b\u0438 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 (<code>{&quot;a&quot;:1,&quot;a&quot;:2}<\/code>)? \u0418\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (<code>{&quot;a&quot;:1,&quot;a&quot;:1}<\/code>)? \u0410 \u043a\u0430\u043a \u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430? \u0412 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 Unicode-\u0444\u043e\u0440\u043c\u0435, \u043a\u0430\u043a NFC? \u0412 RFC \u043d\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430.<\/p>\n<p>  \u0412\u043e \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e. \u041e\u0442\u0441\u044e\u0434\u0430 \u2014 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c\u044e (\u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a, \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0435\u0448\u0438\u0442\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 JSON-\u043f\u0430\u0440\u0441\u0435\u0440 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439).<\/p>\n<p>  \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430. \u042d\u0442\u0438 \u0442\u0435\u0441\u0442\u044b \u043d\u0443\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043a\u0430\u043a \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430, \u044d\u0442\u0438 \u0442\u0435\u0441\u0442\u044b \u0442\u0440\u0443\u0434\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0422\u0430\u043a \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (log statements) \u0438\/\u0438\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u0432.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430. \u041f\u043e\u043b\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab<a href=\"http:\/\/seriot.ch\/json\/transform.html\">\u041a\u043e\u043d\u0442\u0435\u043d\u0442 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/a>\u00bb. <\/p>\n<p>  <b>\u0427\u0438\u0441\u043b\u0430<\/b><\/p>\n<ul>\n<li><code>1.000000000000000005<\/code> \u043e\u0431\u044b\u0447\u043d\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 <code>1.0<\/code>, \u043d\u043e Rust 1.12.0 \/ json 0.10.2 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0447\u0438\u0441\u043b\u043e <code>1.000000000000000005<\/code><\/li>\n<li><code>1E-999<\/code> \u043e\u0431\u044b\u0447\u043d\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0447\u0438\u0441\u043b\u0430 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u0438\u043b\u0438 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 (double) <code>0.0<\/code>, \u043d\u043e Freddy \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 <code>&quot;1E-999&quot;<\/code>. Swift Apple JSONSerializattion \u0438 Obj-C JSONKit \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0438 \u0432\u044b\u0434\u0430\u044e\u0442 \u043e\u0448\u0438\u0431\u043a\u0443.<\/li>\n<li><code>10000000000000000999<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432 \u0447\u0438\u0441\u043b\u043e \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 (Swift Apple JSONSerialization), \u0432 unsigned long long (Objective-C JSONKit) \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0443 (Swift Freddy). \u041d\u0430\u0434\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e cJSON \u043f\u0430\u0440\u0441\u0438\u0442 \u0435\u0433\u043e \u043a\u0430\u043a \u0447\u0438\u0441\u043b\u043e \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0442\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e <code>10000000000000002048<\/code> (\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0446\u0438\u0444\u0440\u044b).<\/li>\n<\/ul>\n<p>  <b>\u041e\u0431\u044a\u0435\u043a\u0442\u044b<\/b><\/p>\n<ul>\n<li>\u0412 \u043a\u043b\u044e\u0447\u0430\u0445 {<code>&quot;C3A9:&quot;NFC&quot;<\/code>, <code>&quot;65CC81&quot;:&quot;NFD&quot;<\/code>} \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043e NFC- \u0438 NFD-\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 &quot;\u00e9&quot;. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0432\u044b\u0434\u0430\u044e\u0442 \u0434\u0432\u0430 \u043a\u043b\u044e\u0447\u0430, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c Apple JSONSerialization \u0438 Freddy, \u0447\u044c\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u043a\u043b\u044e\u0447\u0438 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u0445 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li><code>{&quot;a&quot;:1,&quot;a&quot;:2}<\/code> \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u0441\u044f \u0432 <code>{&quot;a&quot;:2}<\/code> (Freddy, SBJSON, Go, Python, JavaScript, Ruby, Rust, Lua dksjon), \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0438 <code>{&quot;a&quot;:1}<\/code> (Obj-C Apple NSJSONSerialization, Swift Apple JSONSerialization, Swift Freddy) \u0438\u043b\u0438 <code>{&quot;a&quot;:1,&quot;a&quot;:2}<\/code> (cJSON, R, Lua JSON).<\/li>\n<li><code>{&quot;a&quot;:1,&quot;a&quot;:1}<\/code> \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u0441\u044f \u0432 <code>{&quot;a&quot;:1}<\/code>, \u043d\u043e \u0432 cJSON, R \u0438 Lua JSON \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f <code>{&quot;a&quot;:1,&quot;a&quot;:1}<\/code>.<\/li>\n<li><code>{&quot;a&quot;:0,&quot;a&quot;:-0}<\/code> \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u0441\u044f \u0432 <code>{&quot;a&quot;:0}<\/code>, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f <code>{&quot;a&quot;:-0}<\/code> (Obj-C JSONKit, Go, JavaScript, Lua) \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 <code>{&quot;a&quot;:0, &quot;a&quot;:0}<\/code> (cJSON, R).<\/li>\n<\/ul>\n<p>  <b>\u0421\u0442\u0440\u043e\u043a\u0438<\/b><\/p>\n<ul>\n<li><code>[&quot;A\\u0000B&quot;]<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 u-\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 <code>0x00 NUL<\/code>, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 C-\u043f\u0430\u0440\u0441\u0435\u0440\u0430\u0445. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u044d\u0442\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e (gracefully), \u043d\u043e JSONKit \u0438 cJSON \u0435\u0451 \u043d\u0435 \u043f\u0430\u0440\u0441\u044f\u0442. \u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e, \u0447\u0442\u043e Freddy \u0432\u044b\u0434\u0430\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <code>[&quot;A&quot;]<\/code> (\u0441\u0442\u0440\u043e\u043a\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 0x00).<\/li>\n<li><code>[&quot;\\uD800&quot;]<\/code> \u044d\u0442\u043e u-\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 <code>U+D800<\/code>, \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u0430 \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 UTF-16. \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0432\u044b\u0434\u0430\u044e\u0442 \u043e\u0448\u0438\u0431\u043a\u0443, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0439 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0435 JSON. Python \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0451 \u043d\u0435\u0442\u0440\u043e\u043d\u0443\u0442\u043e\u0439 \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 <code>[&quot;\\uD800&quot;]<\/code>. Go \u0438 JavaScript \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442 \u044d\u0442\u043e\u0442 \u043e\u0441\u043a\u043e\u0440\u0431\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u0430 &quot;\ufffd&quot; <code>U+FFFD REPLACEMENT CHARACTER [&quot;EFBFBD&quot;]<\/code>, R rjson \u0438 Lua dkjson \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0432 \u0435\u0451 UTF-8 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <code>[&quot;EDA080&quot;]<\/code>. R jsonlite \u0438 Lua JSON 20160728.17 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0437\u043d\u0430\u043a\u043e\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0430 <code>[&quot;?&quot;]<\/code>.<\/li>\n<li><code>[&quot;EDA080&quot;]<\/code> \u044d\u0442\u043e \u043d\u0435\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 <code>U+D800<\/code>, \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0439 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0439 \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442 \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 UTF-16, \u043e\u0431\u0441\u0443\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0443\u043d\u043a\u0442\u0435. \u042d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c UTF-8 \u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0430 (\u0441\u043c. <a href=\"#25\">\u0440\u0430\u0437\u0434\u0435\u043b 2.5. \u0421\u0442\u0440\u043e\u043a\u0438 \u2014 \u041e\u0431\u044b\u0447\u043d\u044b\u0435 \u043d\u0435 Unicode-\u0441\u0438\u043c\u0432\u043e\u043b\u044b<\/a>). \u041d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 cJSON, R rjson \u0438 jsonlite, Lua JSON, Lua dkjson \u0438 Ruby, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0435\u0451 \u043d\u0435\u0442\u0440\u043e\u043d\u0443\u0442\u043e\u0439 <code>[&quot;EDA080&quot;]<\/code>. Go \u0438 JavaScript \u0432\u044b\u0434\u0430\u044e\u0442 <code>[&quot;EFBFBDEFBFBDEFBFBD&quot;]<\/code>, \u044d\u0442\u043e \u0442\u0440\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0437\u0430\u043c\u0435\u043d\u044b (\u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043d\u0430 \u0431\u0430\u0439\u0442). Python 2 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 Unicode-\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 <code>[&quot;\\ud800&quot;]<\/code>, \u0430 Python 3 \u043a\u0438\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <code>UnicodeDecodeError<\/code>.<\/li>\n<li><code>[&quot;\\uD800\\uD800&quot;]<\/code> \u0441\u0432\u043e\u0434\u0438\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0441 \u0443\u043c\u0430. R jsonlite \u0432\u044b\u0434\u0430\u0451\u0442 <code>[&quot;\\U00010000&quot;]<\/code>, \u0430 Ruby-\u043f\u0430\u0440\u0441\u0435\u0440 \u2014 <code>[&quot;F0908080&quot;]<\/code>.<\/li>\n<\/ul>\n<p>  <a name=\"6\"><\/a><\/p>\n<h1>6. STJSON<\/h1>\n<p>  STJSON \u2014 \u044d\u0442\u043e JSON-\u043f\u0430\u0440\u0441\u0435\u0440, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Swift 3 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 600+ \u0441\u0442\u0440\u043e\u043a. \u042f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u043c\u043d\u0435\u0439 \u0438 \u043f\u0440\u043e\u0439\u0442\u0438 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u044b.<\/p>\n<p>  <a href=\"https:\/\/github.com\/nst\/STJSON\">github.com\/nst\/STJSON<\/a><\/p>\n<p>  STJSON API \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442:<\/p>\n<pre><code class=\"javascript\">var p = STJSONParser(data: data)  do {     let o = try p.parse()     print(o) } catch let e {     print(e) } <\/code><\/pre>\n<p>  STJSON \u043c\u043e\u0436\u0435\u0442 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<pre><code class=\"javascript\">var p = STJSON(data:data,                maxParserDepth:1024,                options:[.useUnicodeReplacementCharacter]) <\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0441\u0435\u0440 \u043d\u0435 \u043f\u0440\u043e\u0448\u0451\u043b \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0442\u0435\u0441\u0442: <code>y_string_utf16.json<\/code>. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e, \u043a\u0430\u043a \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b, STJSON \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435 UTF-8 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438, \u0445\u043e\u0442\u044f \u0438\u0445 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0442\u0440\u0443\u0434\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u0438, \u0435\u0441\u043b\u0438 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f, \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u044f \u043c\u043e\u0433\u0443 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0422\u0430\u043a\u0436\u0435 STJSON \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u0444\u0430\u0439\u043b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0442\u043c\u0435\u0442\u043a\u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0431\u0430\u0439\u0442\u043e\u0432 \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 UTF-16 \u0438\u043b\u0438 UTF-32.<\/p>\n<p>  <a name=\"7\"><\/a><\/p>\n<h1>7. \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h1>\n<p>  JSON \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u0435\u043f\u043e \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f. \u042f \u0434\u043e\u043a\u0430\u0437\u0430\u043b \u044d\u0442\u043e \u0442\u0435\u043c, \u0447\u0442\u043e:<\/p>\n<ul>\n<li>\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u043e \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043f\u043e \u0448\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u043d\u044b\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c (<a href=\"#1\">\u0440\u0430\u0437\u0434\u0435\u043b 1<\/a>);<\/li>\n<li>\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0438 \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, RFC-7159, \u043d\u0435\u0442\u043e\u0447\u0435\u043d \u0438 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432 (<a href=\"#2\">\u0440\u0430\u0437\u0434\u0435\u043b 2<\/a>);<\/li>\n<li>\u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0441\u0440\u0435\u0434\u0438 30 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043d\u043e\u044e \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0434\u0430\u0436\u0435 \u0434\u0432\u0443\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b \u0432\u044b\u0434\u0430\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b (<a href=\"#4\">\u0440\u0430\u0437\u0434\u0435\u043b 4<\/a>).<\/li>\n<\/ul>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e json_checker.c \u0441 \u0441\u0430\u0439\u0442\u0430 json.org \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 JSON <code>[0e1]<\/code> (<a href=\"#424\">\u0440\u0430\u0437\u0434\u0435\u043b 4.24<\/a>), \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u043e\u043d\u044f\u0442\u044c, \u0433\u0434\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0430 \u0433\u0434\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041c\u043d\u043e\u0433\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u044b \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438 \u043c\u0435\u043d\u044f) \u043b\u044e\u0431\u044f\u0442 \u0445\u0432\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0432\u043e\u0438\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432, \u0442\u043e\u043b\u043a\u0443 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u043b\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u0430\u043b\u043e\u043d\u044b \u0441\u043f\u043e\u0440\u043d\u044b, \u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0441\u043b\u0430\u0431\u044b.<\/p>\n<p>  \u042f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0435\u0449\u0451 \u043e\u0434\u0438\u043d JSON-\u043f\u0430\u0440\u0441\u0435\u0440 (<a href=\"#6\">\u0440\u0430\u0437\u0434\u0435\u043b 6<\/a>), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0430\u0440\u0441\u0438\u0442 \u0438\u043b\u0438 \u043e\u0442\u0432\u0435\u0440\u0433\u0430\u0435\u0442 JSON-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043c\u043e\u0435\u043c\u0443 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044e RFC 7159. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435, \u0441\u043e\u043e\u0431\u0449\u0430\u0439\u0442\u0435 \u043e \u0431\u0430\u0433\u0430\u0445 \u0438 \u0434\u0435\u043b\u0430\u0439\u0442\u0435 pull request\u2019\u044b.<\/p>\n<p>  \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <b>\u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432<\/b>, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0442\u0435\u0445, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043d\u0435 Apple-\u0441\u0440\u0435\u0434\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"http:\/\/www.newtonsoft.com\/json\">Json.Net<\/a>.<\/li>\n<li>\u0418\u0441\u0441\u043b\u0435\u0434\u0443\u044f <b>\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 JSON<\/b>. \u042f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b, \u0447\u0442\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u0441\u044f, \u0430 \u0447\u0442\u043e \u043d\u0435\u0442 (<a href=\"#4\">\u0440\u0430\u0437\u0434\u0435\u043b 4<\/a>). \u041a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440\u0430\u043c\u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b (<a href=\"#5\">\u0440\u0430\u0437\u0434\u0435\u043b 5<\/a>). \u0423\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 JSON \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043f\u0430\u0434\u0430\u044e\u0442 \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430\u0445 (\u0441\u043c. <a href=\"#421\">\u0440\u0430\u0437\u0434\u0435\u043b 4.2.1<\/a>).<\/li>\n<li>\u0418\u0441\u0441\u043b\u0435\u0434\u0443\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0432 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 <b>JSON-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438<\/b> \u043c\u0430\u043f\u044f\u0442 JSON-\u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442-\u043c\u043e\u0434\u0435\u043b\u0438.<\/li>\n<li><b>\u041d\u0430\u0445\u043e\u0434\u044f \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u044b<\/b> \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u0441\u0442\u0435\u043a\u0430\u0445 (\u0441\u043c. \u043c\u043e\u044e \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044e <a href=\"http:\/\/seriot.ch\/resources\/talks_papers\/20141106_asfws_unicode_hacks.pdf\">Unicode Hacks<\/a>).<\/li>\n<li>\u0418\u0441\u0441\u043b\u0435\u0434\u0443\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 <b>\u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/b>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 YAML, <a href=\"http:\/\/bsonspec.org\/\">BSON<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/developers.google.com\/protocol-buffers\/\">ProtoBuf<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 JSON. Apple \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0430 Swift-\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e <a href=\"https:\/\/github.com\/apple\/swift-protobuf-plugin\">github.com\/apple\/swift-protobuf-plugin<\/a>.<\/li>\n<\/ul>\n<p>  \u042f \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0443\u0434\u0438\u0432\u043b\u044f\u044e\u0441\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u00ab\u0445\u0440\u0443\u043f\u043a\u0438\u0435\u00bb \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0432\u0440\u043e\u0434\u0435 HTML, CSS \u0438 JSON \u0438 \u00ab\u043e\u043f\u0430\u0441\u043d\u044b\u0435\u00bb \u044f\u0437\u044b\u043a\u0438 \u0432\u0440\u043e\u0434\u0435 PHP \u0438\u043b\u0438 JavaScript \u0441\u0442\u0430\u043b\u0438 \u0442\u0430\u043a \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u0438\u0437-\u0437\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043b\u0438\u0431\u0435\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043c\u0430\u043d\u0447\u0438\u0432\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439. \u041d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u0441\u043a\u0440\u044b\u0442\u0443\u044e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>  <a name=\"8\"><\/a><\/p>\n<h1>8. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<ol>\n<li>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 <a href=\"http:\/\/seriot.ch\/json\/parsing.html\">seriot.ch\/json\/parsing.html<\/a>, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043b\u044f <a href=\"#4\">\u0440\u0430\u0437\u0434\u0435\u043b\u0430 4<\/a>.<\/li>\n<li>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f <a href=\"http:\/\/seriot.ch\/json\/transform.html\">seriot.ch\/json\/transform.html<\/a>, \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u043b\u044f <a href=\"#6\">\u0440\u0430\u0437\u0434\u0435\u043b\u0430 6<\/a>.<\/li>\n<li>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u043b\u044f JSON <a href=\"https:\/\/github.com\/nst\/JSONTestSuite\">github.com\/nst\/JSONTestSuite<\/a>, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u044b \u0438 \u043a\u043e\u0434.<\/li>\n<li>STJSON <a href=\"https:\/\/github.com\/nst\/STJSON\">github.com\/nst\/STJSON<\/a>, \u043c\u043e\u0439 \u043f\u0430\u0440\u0441\u0435\u0440, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Swift 3. <\/li>\n<\/ol>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/314014\/\"> https:\/\/habrahabr.ru\/post\/314014\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/55a\/70e\/a58\/55a70ea5864211ffb526350b07bcf847.jpg\" alt=\"image\"\/><\/p>\n<p>  JSON \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u0435-\u0444\u0430\u043a\u0442\u043e, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u0440\u0435\u0447\u044c \u043e (\u0434\u0435)\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0431\u043c\u0435\u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0441\u0435\u0442\u0438 \u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u041d\u043e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u044b \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 JSON? \u0412\u0441\u0435 \u043c\u044b \u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043f\u0438\u0448\u0435\u043c \u0442\u0435\u0441\u0442\u044b, \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 JSON-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043d\u0443\u0436\u0434. \u042f \u043f\u043e\u043a\u0430\u0436\u0443 \u0432\u0430\u043c, \u0447\u0442\u043e JSON \u2014 \u044d\u0442\u043e \u0438\u0434\u0435\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u0430 \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439, \u043a\u0430\u043a\u0438\u043c \u0435\u0433\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442. \u042f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0438 \u0434\u0432\u0443\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0432\u0435\u0434\u0443\u0449\u0438\u0445 \u0441\u0435\u0431\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0438 \u0437\u043b\u043e\u0432\u0440\u0435\u0434\u043d\u0430\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0431\u0430\u0433\u0430\u043c, \u043f\u0430\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 DoS, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e JSON-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u0449\u0438 \u043f\u043b\u043e\u0445\u043e \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">1. <a href=\"#1\">\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 JSON <\/a><br \/>  2. <a href=\"#2\">\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/a><br \/>  2.1. <a href=\"#21\">\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/a><br \/>  2.2. <a href=\"#22\">\u0427\u0438\u0441\u043b\u0430 (Numbers)<\/a><br \/>  2.3. <a href=\"#23\">\u041c\u0430\u0441\u0441\u0438\u0432\u044b<\/a><br \/>  2.4. <a href=\"#24\">\u041e\u0431\u044a\u0435\u043a\u0442\u044b<\/a><br \/>  2.5. <a href=\"#25\">\u0421\u0442\u0440\u043e\u043a\u0438<\/a><br \/>  2.6. <a href=\"#26\">\u0414\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f RFC 7159<\/a> <br \/>  3. <a href=\"#3\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a> <br \/>  4. <a href=\"#4\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a><br \/>  4.1. <a href=\"#41\">\u041f\u043e\u043b\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/a><br \/>  4.2. <a href=\"#42\">C-\u043f\u0430\u0440\u0441\u0435\u0440\u044b<\/a><br \/>  4.3. <a href=\"#43\">Objective-C-\u043f\u0430\u0440\u0441\u0435\u0440\u044b<\/a><br \/>  4.4. <a href=\"#44\">Apple (NS)JSONSerialization<\/a><br \/>  4.5. <a href=\"#45\">Freddy (Swift)<\/a><br \/>  4.6. <a href=\"#46\">Bash JSON.sh<\/a><br \/>  4.7. <a href=\"#47\">\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b<\/a><br \/>  4.8. <a href=\"#48\">JSON Checker<\/a><br \/>  4.9. <a href=\"#49\">\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a> <br \/>  5. <a href=\"#5\">\u041a\u043e\u043d\u0442\u0435\u043d\u0442 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/a> <br \/>  6. <a href=\"#6\">STJSON<\/a> <br \/>  7. <a href=\"#7\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a> <br \/>  8. <a href=\"#8\">\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/a> <\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-280245","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/280245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=280245"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/280245\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=280245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=280245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=280245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}