Ошибка «НСпрСдвидСнный символ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ JSONΒ» Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых распространённых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ с внСшними сСрвисами ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π²Π΅Π±-запросов. Она Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° систСма пытаСтся Ρ€Π°ΡΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ JSON-строку, Π½ΠΎ сталкиваСтся с Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ: лишними запятыми, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ, нСэкранированными символами ΠΈΠ»ΠΈ вовсС Π±ΠΈΡ‚ΠΎΠΉ структурой. Π§Π°Ρ‰Π΅ всСго ошибка появляСтся Π² сцСнариях:

β€” ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ 1Π‘ ΠΈ сайтом (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· HTTPБСрвис ΠΈΠ»ΠΈ REST API).

β€” Π˜ΠΌΠΏΠΎΡ€Ρ‚/экспорт JSON-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ….

β€” Π Π°Π±ΠΎΡ‚Π° с внСшними API (Π±Π°Π½ΠΊΠΈ, маркСтплСйсы, логистичСскиС сСрвисы).

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ошибки, ΠΎΡ‚ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ Π΄ΠΎ слоТных случаСв с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ экранированиСм, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Π΅ инструкции ΠΏΠΎ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ β€” ΠΎΡ‚ Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΏΡ€Π°Π²ΠΊΠΈ JSON Π΄ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ 1Π‘. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ Β«ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹ΠΌ камням», ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΏΠΈΡˆΡƒΡ‚ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

1. Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ошибка «НСпрСдвидСнный символ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ JSONΒ»?

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС появляСтся, ΠΊΠΎΠ³Π΄Π° встроСнный парсСр 1Π‘ (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒJSON(), Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒJSON() ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ дСлятся Π½Π° Ρ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

  • πŸ”Ή БинтаксичСскиС ошибки: ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, запятыС, скобки, Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ символы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, β€˜ вмСсто ").
  • πŸ”Ή ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ: JSON ΠΏΡ€ΠΈΡˆΡ‘Π» Π² UTF-8 с BOM, Π° 1Π‘ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Windows-1251, ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.
  • πŸ”Ή ЛогичСскиС ошибки: нСсоотвСтствиС структуры JSON ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ схСмС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, массив вмСсто ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°).

Π’Π°ΠΆΠ½ΠΎ: 1Π‘ Π½Π΅ всСгда ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ошибки Π² строкС. НапримСр, Ссли Π² JSON ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° запятая послС 10-Π³ΠΎ элСмСнта массива, парсСр ΠΌΠΎΠΆΠ΅Ρ‚ Β«ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒΡΡΒ» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° 20-ΠΌ элСмСнтС, выдавая Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ сообщСниС. Π­Ρ‚ΠΎ услоТняСт диагностику.

πŸ“Š Π‘ ΠΊΠ°ΠΊΠΎΠΉ систСмой Ρ‡Π°Ρ‰Π΅ всСго ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ JSON Π² 1Π‘?
Π‘Π°ΠΉΡ‚ Π½Π° Bitrix
ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡΡ‹ (Ozon, WB)
БанковскиС API
ЛогистичСскиС сСрвисы (Π‘Π”Π­Πš)
Π”Ρ€ΡƒΠ³ΠΎΠ΅

2. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ

Рассмотрим самыС распространённыС сцСнарии, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ способы ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

2.1. ΠžΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Π² Ρ€ΡƒΡ‡Π½ΠΎΠΌ JSON

Если Π²Ρ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅ JSON-строку Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅), Π²Π΅Π»ΠΈΠΊ риск ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡ‚ΡƒΡŽ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

ВСкстJSON = '{

"Имя": "Иван",

"Ѐамилия": "ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²" // <-- ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° запятая ΠΏΠ΅Ρ€Π΅Π΄ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ»Π΅ΠΌ

"ΠžΡ‚Ρ‡Π΅ΡΡ‚Π²ΠΎ": "Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²ΠΈΡ‡"

}';

πŸ” Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ½Π»Π°ΠΉΠ½-Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€Ρ‹ JSON (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JSONLint). Они подсвСтят ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΡƒΠΊΠ°ΠΆΡƒΡ‚ строку.

2.2. НСэкранированныС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы

JSON Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ экранирования символов Ρ‚ΠΈΠΏΠ° \, ", /, \n. Если Π² Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, тСкст с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ ("Π¦Π΅Π½Π°: "100 Ρ€ΡƒΠ±.""), парсСр «споткнётся».

❌ ΠžΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ:

"ОписаниС": "Π’ΠΎΠ²Π°Ρ€ "ΠŸΡ€Π΅ΠΌΠΈΡƒΠΌ" класса"

βœ… ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ:

"ОписаниС": "Π’ΠΎΠ²Π°Ρ€ \"ΠŸΡ€Π΅ΠΌΠΈΡƒΠΌ\" класса"

2.3. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ

Если JSON ΠΏΡ€ΠΈΡˆΡ‘Π» ΠΈΠ· внСшнСго источника (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ API), Π΅Π³ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ Π² 1Π‘. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ случай: сСрвСр ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ UTF-8, Π° 1Π‘ пытаСтся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Windows-1251, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ «кракозябры» ΠΈΠ»ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ символы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, BOM).

πŸ” Как Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ:

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ JSON-Ρ„Π°ΠΉΠ» Π² Notepad++ ΠΈΠ»ΠΈ VS Code β€” Π² строкС состояния отобразится Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°. Если Π²ΠΈΠ΄ΠΈΡ‚Π΅ UTF-8-BOM, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ BOM (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· ΠŸΡ€Π°Π²ΠΊΠ° β†’ ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ β†’ ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² UTF-8 (Π±Π΅Π· BOM)).

πŸ’‘

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ, всСгда явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΅Ρ‘ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π² 1Π‘: ВСкст = Новый ЧтСниСВСкста(ИмяЀайла, ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.UTF8).ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ().

2.4. НСсоотвСтствиС структуры JSON ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ схСмС

Иногда JSON тСхничСски ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½, Π½ΠΎ Π΅Π³ΠΎ структура Π½Π΅ совпадаСт с Ρ‚ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ 1Π‘. НапримСр, API Π²Π΅Ρ€Π½ΡƒΠ» массив, Π° ваш ΠΊΠΎΠ΄ рассчитан Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ этом случаС парсСр Π½Π΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ синтаксиса, Π½ΠΎ дальнСйшая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ сбоСм.

πŸ” ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π’Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅:

{

"Π’ΠΎΠ²Π°Ρ€Ρ‹": [

{"НаимСнованиС": "Π’ΠΎΠ²Π°Ρ€ 1"},

{"НаимСнованиС": "Π’ΠΎΠ²Π°Ρ€ 2"}

]

}

А ΠΏΡ€ΠΈΡˆΠ»ΠΎ:

[

{"НаимСнованиС": "Π’ΠΎΠ²Π°Ρ€ 1"},

{"НаимСнованиС": "Π’ΠΎΠ²Π°Ρ€ 2"}

]

2.5. Π‘ΠΈΡ‚Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ внСшнСго API

НСкоторыС API (особСнно банковскиС ΠΈΠ»ΠΈ государствСнныС) ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ JSON с Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ символами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, \x00 ΠΈΠ»ΠΈ \x1F). Π’Π°ΠΊΠΈΠ΅ символы Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Π½ΠΎ Π»ΠΎΠΌΠ°ΡŽΡ‚ парсинг.

πŸ” Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π’Π’Π½ΡƒΡ‚Ρ€(ВСкстJSON) Π² 1Π‘ β€” это ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ всС Π½Π΅ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Π΅ символы Π² Π²ΠΈΠ΄Π΅ ~X.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для очистки JSON ΠΎΡ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… символов

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, Π‘ΠΈΠΌΠ²ΠΎΠ»(0), ""); // УдаляСм Π½ΡƒΠ»Π΅Π²ΠΎΠΉ символ

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, Π‘ΠΈΠΌΠ²ΠΎΠ»(31), ""); // УдаляСм символ US (Unit Separator)

3. Пошаговая инструкция: ΠΊΠ°ΠΊ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ

Алгоритм дСйствий зависит ΠΎΡ‚ источника JSON. НиТС β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ схСма для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° случаСв.

Π¨Π°Π³ 1: Валидация JSON

ΠŸΠ΅Ρ€Π΅Π΄ парсингом Π² 1Π‘ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ JSON Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ:

  1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ строку JSON Π² Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JSON Formatter).
  2. Если Π΅ΡΡ‚ΡŒ ошибки β€” ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΈΡ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ автоматичСски (ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΎΠΏΡ†ΠΈΡŽ Fix JSON).
  3. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ структура соотвСтствуСт ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ vs массив).

Π¨Π°Π³ 2: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ

Если JSON читаСтся ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π° HTTP-запроса:

  • πŸ“„ ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Π² Notepad++ ΠΈ посмотритС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ Π² строкС состояния.
  • πŸ”„ ΠŸΡ€ΠΈ нСобходимости ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π² UTF-8 Π±Π΅Π· BOM.
  • πŸ“ Π’ ΠΊΠΎΠ΄Π΅ 1Π‘ явно ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ:
    ВСкстJSON = Новый ЧтСниСВСкста(ИмяЀайла, ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.UTF8).ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ();

Π¨Π°Π³ 3: ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΎΡ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… символов

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ для удалСния ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… символов:

Ѐункция ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒJSON(ВСкстJSON)

// УдаляСм Π½Π΅ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Π΅ символы (ΠΊΡ€ΠΎΠΌΠ΅ \t, \n, \r)

Для Π‘Ρ‡ = 0 По 31 Π¦ΠΈΠΊΠ»

Если НЕ (Π‘Ρ‡ = 9 Или Π‘Ρ‡ = 10 Или Π‘Ρ‡ = 13) Π’ΠΎΠ³Π΄Π°

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, Π‘ΠΈΠΌΠ²ΠΎΠ»(Π‘Ρ‡), "");

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ВСкстJSON;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π¨Π°Π³ 4: Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов

Если Π² Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ слэши, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½() ΠΈΠ»ΠΈ JSON.Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ() (Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹):

ВСкстJSON = JSON.Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(ВСкстJSON); // Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 8.3.20+

// Или Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ:

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, """", "\"\"");

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, "\", "\\");

Π¨Π°Π³ 5: ΠžΡ‚Π»Π°Π΄ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· Π—Π°ΠΏΠΈΡΡŒJSON/Π§Ρ‚Π΅Π½ΠΈΠ΅JSON

Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сохранитС JSON Π² Ρ„Π°ΠΉΠ» ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΅Π³ΠΎ содСрТимоС:

Π—Π°ΠΏΠΈΡΡŒJSON = Новый Π—Π°ΠΏΠΈΡΡŒJSON;

Π—Π°ΠΏΠΈΡΡŒJSON.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ();

Π—Π°ΠΏΠΈΡΡŒJSON.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒJSON(Π’Π°ΡˆΠΈΠ”Π°Π½Π½Ρ‹Π΅);

ВСкстJSON = Π—Π°ΠΏΠΈΡΡŒJSON.Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ();

// БохраняСм для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ

ВСкстJSON.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ("C:\temp\debug.json", ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.UTF8);

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ JSON Π½Π° синтаксичСскиС ошибки Π² Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€Π΅|Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ (UTF-8 Π±Π΅Π· BOM)|ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚Π΅ JSON ΠΎΡ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… символов|Π­ΠΊΡ€Π°Π½ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы (ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, слэши)|Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ структуру JSON с ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ схСмой-->

4. РаспространённыС ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с JSON Π² 1Π‘

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ ΠΈΠ½ΠΎΠ³Π΄Π° ΡƒΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π½ΡŽΠ°Π½ΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ сбоям. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚ΠΎΠΏ-5 Β«ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉΒ».

4.1. ИспользованиС ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ вмСсто Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ…

JSON строго Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для строковых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ (') ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ (`) нСдопустимы:

❌ {"Name": 'Иван'}  // Ошибка!

βœ… {"Name": "Иван"}

4.2. ЗапятыС послС послСднСго элСмСнта

Π’ JSON Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹ запятыС послС послСднСго элСмСнта ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ массива:

❌ {

"Field1": "Value1",

"Field2": "Value2", // <-- Π›ΠΈΡˆΠ½ΡΡ запятая

}

βœ… {

"Field1": "Value1",

"Field2": "Value2"

}

4.3. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ экранированиС Unicode-символов

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Π²Π½Π΅ ASCII (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² UTF-8. Если Π²Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ экранируСтС ΠΈΡ… ΠΊΠ°ΠΊ \uXXXX, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² коррСктности ΠΊΠΎΠ΄Π°:

❌ "ΠŸΡ€ΠΈΠ²Π΅Ρ‚": "\u0440\u0438\u0432\u0435\u0442"  // НСвСрный порядок Π±Π°ΠΉΡ‚

βœ… "ΠŸΡ€ΠΈΠ²Π΅Ρ‚": "ΠŸΡ€ΠΈΠ²Π΅Ρ‚" // Или ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ экранированиС: "\u041F\u0440\u0438\u0432\u0435\u0442"

4.4. ΠŸΡƒΡΡ‚Ρ‹Π΅ значСния Π±Π΅Π· указания Ρ‚ΠΈΠΏΠ°

JSON Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Null Π² качСствС значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Если ΠΏΠΎΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустым, явно ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ null:

❌ {"Field": }  // Ошибка!

βœ… {"Field": null}

4.5. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² JSON

JSON ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для тСкста. Если Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ), Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΡ… Π² Base64:

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ = ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ();

ВСкстBase64 = Base64Π‘Ρ‚Ρ€ΠΎΠΊΠ°(Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅);

JSON.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Image", ВСкстBase64);

πŸ’‘

ВсСгда провСряйтС JSON Π½Π° соотвСтствиС стандарту RFC 8259. Π”Π°ΠΆΠ΅ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ отклонСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² JSON) приводят ΠΊ ошибкам парсинга Π² 1Π‘.

5. Автоматизация ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ JSON Π² 1Π‘

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ΄ автоматичСскиС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. НиТС β€” Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

5.1. Ѐункция Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ JSON

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот ΠΊΠΎΠ΄ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности JSON ΠΏΠ΅Ρ€Π΅Π΄ парсингом:

Ѐункция ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒJSON(ВСкстJSON)

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π§Ρ‚Π΅Π½ΠΈΠ΅JSON = Новый Π§Ρ‚Π΅Π½ΠΈΠ΅JSON;

Π§Ρ‚Π΅Π½ΠΈΠ΅JSON.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(ВСкстJSON);

Π§Ρ‚Π΅Π½ΠΈΠ΅JSON.ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒJSON(); // Если ошибка β€” Π²Ρ‹Π»Π΅Ρ‚ΠΈΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°;

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π›ΠΎΠΆΡŒ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

5.2. Π›ΠΎΠ³Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ошибок парсинга

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ошибок запись Π² Π»ΠΎΠ³ с Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π”Π°Π½Π½Ρ‹Π΅ = JSON.ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒJSON(ВСкстJSON);

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ’Π›ΠΎΠ³("Ошибка JSON: " + ОписаниСОшибки());

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ’Π›ΠΎΠ³("ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ JSON: " + Π‘Ρ€Π΅Π΄(ВСкстJSON, 1, 500)); // ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 500 символов

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

5.3. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

JSON Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°Π΅Ρ‚ Ρ‚ΠΈΠΏΡ‹ чисСл (всС числа β€” Number). Π’ 1Π‘ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСоТиданностям. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) = Π’ΠΈΠΏ("Число") Π’ΠΎΠ³Π΄Π°

Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π¦Π΅Π»(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π’ΠΎΠ³Π΄Π°

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π¦Π΅Π»(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅); // ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ

Π˜Π½Π°Ρ‡Π΅

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = ΠžΠΊΡ€(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, 2); // ΠžΠΊΡ€ΡƒΠ³Π»ΡΠ΅ΠΌ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

πŸ’‘

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ слоТных JSON ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€XDTO β€” ΠΎΠ½ Π΄Π°Ρ‘Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Ρ‡Π΅ΠΌ встроСнный парсСр.

6. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ исправлСния Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ошибок

Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ кСйсы ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΈ способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

КСйс 1: Ошибка ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ API Π±Π°Π½ΠΊΠ°

Битуация: ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ выписки ΠΈΠ· Π±Π°Π½ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· API ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Π²Π΅Ρ‚ с ошибкой НСпрСдвидСнный символ: .

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: Π‘Π°Π½ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ JSON с BOM (Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ символ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π°).

РСшСниС:

ВСкстJSON = Π‘ΠΎΠΊΡ€Π›ΠŸ(ВСкстJSON);  // УдаляСм BOM ΠΈ лишниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹

Если Π›Π΅Π²(ВСкстJSON, 1) = Π‘ΠΈΠΌΠ²ΠΎΠ»(65279) Π’ΠΎΠ³Π΄Π° // ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π½Π° BOM (UTF-8)

ВСкстJSON = Π‘Ρ€Π΅Π΄(ВСкстJSON, 2);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

КСйс 2: Ошибка ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ JSON ΠΈΠ· Excel

Битуация: ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ экспортировал Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Excel Π² JSON, Π½ΠΎ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π² 1Π‘ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка Π½Π° символС #.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: Excel экранируСт символы Π½Π΅ ΠΏΠΎ стандарту JSON.

РСшСниС:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Python-скрипт) ΠΈΠ»ΠΈ ΠΎΡ‡ΠΈΡ‰Π°ΠΉΡ‚Π΅ JSON Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ:

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, "#", "\#");

КСйс 3: Ошибка ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ с сайтом Π½Π° Bitrix

Битуация: ΠŸΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π·Π°ΠΊΠ°Π·Π° Π½Π° сайт возвращаСтся ошибка НСпрСдвидСнный символ: &.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: Π’ Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ HTML-сущности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, &), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ экранированы.

РСшСниС:

Π”Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠΉΡ‚Π΅ сущности ΠΏΠ΅Ρ€Π΅Π΄ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ JSON:

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, "&", "&");

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, "&", "\u0026"); // Π­ΠΊΡ€Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ & ΠΊΠ°ΠΊ Unicode

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список HTML-сущностСй для Π·Π°ΠΌΠ΅Π½Ρ‹

" β†’ \"
& β†’ \u0026
< β†’ \u003C
> β†’ \u003E

7. Π’Π°Π±Π»ΠΈΡ†Π°: ЧастыС символы-ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ошибок ΠΈ ΠΈΡ… исправлСниС

Π‘ΠΈΠΌΠ²ΠΎΠ» ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° ошибки Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠŸΡ€ΠΈΠΌΠ΅Ρ€
" НСэкранированная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° Π²Π½ΡƒΡ‚Ρ€ΠΈ строки Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° \" "Text": "Hello "World"" β†’ "Text": "Hello \"World\""
\ НСэкранированный ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° \\ "Path": "C:\Folder" β†’ "Path": "C:\\Folder"
 (BOM) НСвидимый символ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π° Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 3 Π±Π°ΠΉΡ‚Π° (UTF-8 BOM) ВСкстJSON = Π‘Ρ€Π΅Π΄(ВСкстJSON, 2)
, Π›ΠΈΡˆΠ½ΡΡ запятая послС послСднСго элСмСнта Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π·Π°ΠΏΡΡ‚ΡƒΡŽ {"a":1,} β†’ {"a":1}
\n, \t НСэкранированныС ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ \\n, \\t "Text": "Line1\nLine2" β†’ "Text": "Line1\\nLine2"

8. ΠŸΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠ° ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с JSON Π² 1Π‘

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ риск ошибок, слСдуйтС этим рСкомСндациям:

  • πŸ”§ ВсСгда Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΠΉΡ‚Π΅ JSON ΠΏΠ΅Ρ€Π΅Π΄ парсингом β€” Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ гСнСрируСтся автоматичСски.
  • πŸ“Œ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ структуры:
    Π”Π°Π½Π½Ρ‹Π΅ = JSON.ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒJSON(ВСкстJSON, Π˜ΡΡ‚ΠΈΠ½Π°);  // Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ β€” строгая типизация
  • πŸ”„ ВСстируйтС ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π° тСстовых сСрвСрах ΠΏΠ΅Ρ€Π΅Π΄ Π±ΠΎΠ΅ΠΌ.
  • πŸ“‚ Π›ΠΎΠ³Π³ΠΈΡ€ΡƒΠΉΡ‚Π΅ всС JSON-запросы/ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.
  • πŸ›  ΠžΠ±Π½ΠΎΠ²Π»ΡΠΉΡ‚Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ 1Π‘ β€” Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с JSON.

πŸ”Ή Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ json-serializer ΠΈΠ· GitHub β€” ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄Π°Ρ‚Π°ΠΌΠΈ ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ).

πŸ”Ή Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ:

Если Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ JSON ΠΎΡ‚ ΠΏΠ°Ρ€Ρ‚Π½Ρ‘Ρ€ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈΠ· Excel), Ρ‚Ρ€Π΅Π±ΡƒΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ.

πŸ’‘

РСгулярно обновляйтС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ 1Π‘ β€” Π² Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ… ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ошибки парсинга JSON, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° стандарта RFC 8259.

FAQ: ЧастыС вопросы ΠΏΠΎ ошибкС JSON Π² 1Π‘

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π΄Π°ΠΆΠ΅ Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ JSON?

ВСроятныС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  1. JSON содСрТит Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ символы (BOM, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы).
  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСсовмСстимая ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, UTF-16 вмСсто UTF-8).
  3. Π’ 1Π‘ установлСны ограничСния Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ JSON (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ настройки кластСра).

πŸ” Диагностика:

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ JSON Π² Ρ„Π°ΠΉΠ» ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π² hex-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, HxD) β€” это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ скрытыС символы.

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ JSON с коммСнтариями? Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ парсСр ΠΈΡ… Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚.

JSON ΠΏΠΎ стандарту Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ JavaScript). Если Π²Π°ΠΌ ΠΏΡ€ΠΈΡˆΡ‘Π» JSON с коммСнтариями (// ΠΈΠ»ΠΈ / /), ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ парсингом:

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, "//", "");  // УдаляСм однострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, "/*", "");

ВСкстJSON = Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ(ВСкстJSON, "*/", "");

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π­Ρ‚ΠΎ Β«ΠΊΠΎΡΡ‚Ρ‹Π»ΡŒΒ». Π›ΡƒΡ‡ΡˆΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ поставщика Π΄Π°Π½Π½Ρ‹Ρ… JSON Π±Π΅Π· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JSON5 Π² 1Π‘?

JSON5 β€” Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ JSON с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², нСэкранированных ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈ Ρ‚.Π΄. ВстроСнный парсСр 1Π‘ Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚.

πŸ”§ РСшСниС:

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ JSON5 Π² стандартный JSON с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π½Π΅ΡˆΠ½ΠΈΡ… инструмСнтов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Node.js ΠΈΠ»ΠΈ Python).

Как ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρ‹ Π² JSON ΠΌΠ΅ΠΆΠ΄Ρƒ 1Π‘ ΠΈ внСшними систСмами?

JSON Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏΠ° Π”Π°Ρ‚Π°. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹:

  • πŸ“… ISO 8601 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "2026-05-20T14:30:00Z").
  • πŸ“† Unix timestamp (количСство сСкунд с 1970 Π³ΠΎΠ΄Π°).

πŸ”„ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π² 1Π‘:

// Из строки ISO Π² Π΄Π°Ρ‚Ρƒ 1Π‘

Π”Π°Ρ‚Π° = ΠŸΠ°Ρ€ΡΠΈΡ‚ΡŒΠ”Π°Ρ‚Π°Π˜Π·JSON("2026-05-20T14:30:00Z");

// Из Π΄Π°Ρ‚Ρ‹ 1Π‘ Π² строку ISO

Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π”Π°Ρ‚Π° = Π€ΠΎΡ€ΠΌΠ°Ρ‚(ВСкущаяДата(), "Π”Π€=yyyy-MM-ddTHH:mm:ssZ");

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° сСрвСрС, Π½ΠΎ Π½Π΅ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅?

ВСроятныС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  1. πŸ–₯ Π Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° сСрвСрС ΠΈ локальной машинС.
  2. πŸ“‘ ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с сСтСвым ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, прокси ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ JSON).
  3. πŸ”’ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ кластСра 1Π‘ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»ΠΈΠΌΠΈΡ‚ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ JSON).

πŸ” Диагностика:

  1. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.Π’Π΅ΠΊΡƒΡ‰Π°ΡΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°() Π½Π° сСрвСрС ΠΈ локально.
  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈ кластСра 1Π‘ Π½Π° ошибки.
  3. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ JSON Π½Π° сСрвСрС ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с API государствСнных систСм (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ЀНБ, ПЀР), ΠΈΡ… JSON-ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ символы ΠΈΠ»ΠΈ структуры. ВсСгда тСстируйтС ΠΎΠ±ΠΌΠ΅Π½ Π½Π° тСстовых ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°Ρ… ΠΏΠ΅Ρ€Π΅Π΄ Π±ΠΎΠ΅ΠΌ.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ вСрсиях 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π½ΠΈΠΆΠ΅ 8.3.10 парсСр JSON ΠΌΠ΅Π½Π΅Π΅ устойчив ΠΊ ошибкам. РСкомСндуСтся ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ использованиС Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.