ToolDeck

Escape JSON

Escapuj i de-escapuj znaki specjalne JSON w ciągach tekstowych

Wypróbuj przykład

Wejście

Wyjście

Działa lokalnie · Bezpieczne do wklejania sekretów
Wynik pojawi się tutaj…

Czym jest escapowanie ciągów JSON?

Escapowanie ciągów JSON to proces zamiany znaków specjalnych wewnątrz łańcucha tekstowego na sekwencje ucieczki, które parsery JSON mogą odczytać bez naruszenia struktury dokumentu. Specyfikacja JSON (ECMA-404 / RFC 8259) wymaga, aby określone znaki wewnątrz wartości tekstowych były poprzedzone ukośnikiem odwrotnym. Bez prawidłowego escapowania dosłowny cudzysłów lub znak nowej linii wewnątrz ciągu zakończyłby go przedwcześnie i spowodował błąd parsowania.

Każdy ciąg JSON jest ograniczony podwójnymi cudzysłowami. Gdy sam ciąg zawiera cudzysłów, ukośnik odwrotny lub znak kontrolny (U+0000 do U+001F), znak musi być zastąpiony sekwencją ucieczki. Na przykład dosłowna nowa linia staje się \n, tabulacja staje się \t, a cudzysłów staje się \". Każdy punkt kodowy Unicode może być również reprezentowany jako \uXXXX, gdzie XXXX to czterocyfrowa wartość szesnastkowa.

De-escapowanie (operacja odwrotna) konwertuje sekwencje z ukośnikiem odwrotnym z powrotem do oryginalnych znaków. Stosuj je, gdy otrzymujesz ładunek JSON, w którym wartości łańcuchowe są podwójnie escapowane, lub gdy chcesz wyodrębnić surowy tekst z wpisu dziennika JSON do wyświetlenia w interfejsie lub terminalu. Potoki agregacji logów trafiają na to stale: gdy wiadomość zakodowana jako JSON jest przechowywana jako wartość ciągu wewnątrz innego dokumentu JSON, każdy ukośnik odwrotny w wewnętrznym ciągu pojawia się podwojony.

Dlaczego warto używać narzędzia JSON escape?

Ręczne dodawanie lub usuwanie ukośników odwrotnych jest żmudne i podatne na błędy, szczególnie przy pracy z tekstem wieloliniowym, ścieżkami plików lub osadzonymi fragmentami kodu. Dedykowane narzędzie wychwytuje przypadki brzegowe, które ręczna edycja pomija.

🔒
Przetwarzanie z poszanowaniem prywatności
Twoje ciągi nigdy nie opuszczają przeglądarki. Całe escapowanie i de-escapowanie działa lokalnie w JavaScript bez żadnych wywołań serwera, dzięki czemu wrażliwe dane, takie jak klucze API lub tokeny, pozostają na Twoim urządzeniu.
Natychmiastowa konwersja
Wklej dowolny tekst i uzyskaj poprawnie escapowany wynik JSON w milisekundach. Żadnego oczekiwania na odpowiedź ze zdalnego serwera.
🛡️
Bez konta i instalacji
Otwórz stronę i zacznij escapować. Żadnego formularza rejestracyjnego, rozszerzenia przeglądarki ani narzędzia wiersza poleceń do instalacji. Działa na każdym urządzeniu z nowoczesną przeglądarką.
📋
Pełne pokrycie znaków
Obsługuje wszystkie wymagane przez JSON sekwencje ucieczki: cudzysłowy, ukośniki odwrotne, znaki kontrolne (U+0000 do U+001F) oraz sekwencje Unicode, w tym emoji i znaki CJK.

Przypadki użycia JSON escape

Programowanie frontendowe
Escapuj treść generowaną przez użytkownika przed osadzeniem jej w ładunku JSON wysyłanym przez fetch lub XMLHttpRequest. Zapobiega niepoprawnym żądaniom, gdy użytkownicy wpisują cudzysłowy, znaki nowej linii lub emoji.
Praca z backendowym API
Buduj treści odpowiedzi JSON w językach, które nie auto-escapują ciągów (skrypty powłoki, procedury składowane SQL, silniki szablonów). Wklej surowy ciąg, skopiuj wersję escapowaną.
DevOps i konfiguracja
Osadzaj wieloliniowe bloki PEM certyfikatów, klucze SSH lub skrypty powłoki w plikach konfiguracyjnych JSON dla Terraform, CloudFormation lub Kubernetes ConfigMaps bez naruszania struktury JSON.
QA i testowanie
Twórz zestawy testowe zawierające znaki brzegowe: tabulacje, bajty zerowe, pary zastępcze Unicode i zagnieżdżone escapowane ciągi. Weryfikuj, czy Twój parser obsługuje je poprawnie.
Inżynieria danych
Czyść podwójnie escapowane wpisy dzienników z Elasticsearch, CloudWatch lub Datadog. De-escapuj ciąg, aby odzyskać oryginalną wiadomość do analizy lub ponownego przetworzenia.
Nauka JSON
Zobacz dokładnie, które znaki wymagają escapowania zgodnie ze specyfikacją JSON. Przydatne dla studentów zapoznających się z ECMA-404 lub budujących własny parser JSON.

Opis sekwencji ucieczki JSON

Specyfikacja JSON definiuje dokładnie dwa wymagane znaki ucieczki (cudzysłów i ukośnik odwrotny) oraz sześć krótkich sekwencji dla typowych znaków kontrolnych. Wszystkie pozostałe znaki kontrolne (U+0000 do U+001F) muszą używać formy \uXXXX. Znaki powyżej U+FFFF (np. emoji) mogą być reprezentowane jako para zastępcza UTF-16: \uD83D\uDE00.

ZnakOpisForma escapowana
"Double quote\"
\Backslash\\
/Forward slash\/ (optional)
\nNewline (LF)\n
\rCarriage return\r
\tTab\t
\bBackspace\b
\fForm feed\f
U+0000–U+001FControl characters\u0000–\u001F
U+0080+Non-ASCII (e.g. emoji)\uXXXX or raw UTF-8

Escapowanie JSON a kodowanie JSON

Programiści czasem mylą escapowanie ciągu z kodowaniem całego dokumentu JSON.

Escapowanie ciągu
Działa na tekście wewnątrz wartości ciągu JSON. Zastępuje znaki specjalne sekwencjami z ukośnikiem odwrotnym, aby ciąg pozostał prawidłowy wewnątrz cudzysłowów. Wejście: surowy tekst. Wyjście: escapowany tekst (nadal wymaga otaczających cudzysłowów, aby być prawidłowym JSON).
Kodowanie JSON (serializacja)
Konwertuje całą strukturę danych (obiekty, tablice, liczby, wartości logiczne, null) na reprezentację tekstową JSON. Escapowanie ciągów jest jednym z kroków w tym większym procesie. Wejście: struktura danych. Wyjście: kompletny dokument JSON.

Przykłady kodu

Każdy popularny język ma wbudowane funkcje do tego celu. Przykłady w JavaScript, Python, Go i jq:

JavaScript (browser / Node.js)
// JSON.stringify escapes a value and wraps it in quotes
JSON.stringify('Line 1\nLine 2')       // → '"Line 1\\nLine 2"'

// To get just the inner escaped string (no surrounding quotes):
const escaped = JSON.stringify('She said "hello"').slice(1, -1)
// → 'She said \\"hello\\"'

// Parsing reverses the escaping
JSON.parse('"tabs\\tand\\nnewlines"')  // → 'tabs\tand\nnewlines'

// Handling Unicode: emoji in JSON
JSON.stringify('Price: 5\u20ac')       // → '"Price: 5\u20ac"' (raw euro sign)
Python
import json

# json.dumps escapes and quotes a string
json.dumps('Line 1\nLine 2')           # → '"Line 1\\nLine 2"'

# Ensure ASCII: replace non-ASCII with \uXXXX sequences
json.dumps('Caf\u00e9', ensure_ascii=True)   # → '"Caf\\u00e9"'

# Keep UTF-8 characters as-is (default in Python 3)
json.dumps('Caf\u00e9', ensure_ascii=False)  # → '"Caf\u00e9"'

# Unescape by round-tripping through json.loads
json.loads('"She said \\"hello\\""')      # → 'She said "hello"'
Go
package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	// json.Marshal escapes a Go string for JSON
	raw := "Line 1\nLine 2\tindented"
	b, _ := json.Marshal(raw)
	fmt.Println(string(b))
	// → "Line 1\nLine 2\tindented"

	// Unescape with json.Unmarshal
	var out string
	json.Unmarshal([]byte(`"She said \"hello\""`), &out)
	fmt.Println(out)
	// → She said "hello"
}
CLI (jq)
# Escape a raw string into a JSON-safe value
echo 'Line 1
Line 2	with tab' | jq -Rs '.'
# → "Line 1\nLine 2\twith tab\n"

# Unescape a JSON string back to raw text
echo '"She said \"hello\""' | jq -r '.'
# → She said "hello"

Często zadawane pytania

Jakie znaki muszą być escapowane w ciągu JSON?
Specyfikacja JSON (RFC 8259) wymaga escapowania cudzysłowu (\"), ukośnika odwrotnego (\\) oraz wszystkich znaków kontrolnych od U+0000 do U+001F. Ukośnik zwykły (/) może być escapowany jako \/, ale jest to opcjonalne. Wszystkie inne znaki Unicode, w tym tekst spoza ASCII i emoji, mogą być użyte bez escapowania, pod warunkiem że dokument używa kodowania UTF-8.
Jaka jest różnica między JSON escape a JSON stringify?
JSON.stringify() w JavaScript serializuje całą wartość JavaScript do ciągu JSON, dodając otaczające cudzysłowy i escapując znaki specjalne wewnątrz. Escapowanie JSON odnosi się konkretnie do zamiany znaków specjalnych na poziomie znaków na sekwencje z ukośnikiem odwrotnym. Wywołanie JSON.stringify() na ciągu wykonuje escapowanie jako część procesu serializacji.
Jak escapować znak nowej linii w JSON?
Zastąp dosłowny znak nowej linii (U+000A) dwuznakową sekwencją \n. Podobnie, powrót karetki (U+000D) staje się \r. Jeśli używasz JSON.stringify() lub json.dumps() w Pythonie, te zamiany są wykonywane automatycznie.
Dlaczego mój ciąg JSON jest podwójnie escapowany?
Podwójne escapowanie pojawia się, gdy ciąg jest serializowany dwukrotnie. Na przykład wywołanie JSON.stringify() na ciągu, który już zawiera sekwencje ucieczki, escapuje ponownie ukośniki odwrotne: \n staje się \\n. Aby to naprawić, przetwórz ciąg raz przez JSON.parse() przed ponowną serializacją lub sprawdź swój potok pod kątem nadmiarowych kroków kodowania.
Czy mogę używać pojedynczych cudzysłowów w ciągach JSON?
Nie. Specyfikacja JSON wymaga podwójnych cudzysłowów dla wszystkich wartości ciągów i nazw właściwości. Pojedyncze cudzysłowy nie są prawidłowym JSON i spowodują błąd parsowania. Jeśli dane źródłowe zawierają pojedyncze cudzysłowy, nie wymagają escapowania wewnątrz ciągu JSON ujętego w podwójne cudzysłowy, ponieważ pojedyncze cudzysłowy są zwykłymi znakami w tym kontekście.
Czy bezpiecznie jest umieszczać niescapowane znaki UTF-8 w JSON?
Tak, pod warunkiem że dokument JSON jest zakodowany w UTF-8, co RFC 8259 określa jako domyślne i zalecane kodowanie. Znaki takie jak litery akcentowane, ideogramy CJK i emoji mogą pojawiać się bezpośrednio w ciągu bez escapowania \uXXXX. Niektóre starsze systemy oczekują JSON tylko w formacie ASCII — w takim przypadku użyj opcji ensure_ascii w Pythonie lub podobnego przełącznika w Twoim języku.
Jak escapować emoji w JSON?
Emoji powyżej U+FFFF są reprezentowane w JSON za pomocą pary zastępczej UTF-16. Na przykład uśmiechnięta twarz (U+1F600) staje się \uD83D\uDE00. Większość serializatorów obsługuje to automatycznie. Jeśli tworzysz JSON ręcznie lub Twoje narzędzia obsługują tylko Podstawową Płaszczyznę Wielojęzyczną, użyj notacji par zastępczych. W przeciwnym razie możesz umieścić emoji bezpośrednio jako znak UTF-8.