# Převodník Objekt JSON na Serializovaný objekt PHP

Snadno serializujte a deserializujte data v jazyce PHP pomocí našeho univerzálního nástroje PHP Serializer a Deserializer. Tento online nástroj je ideální pro vývojáře, kteří chtějí převádět složité datové struktury na ukládatelné řetězce a získávat je zpět do původní podoby. Zajistěte si přesné a efektivní zpracování dat bez nutnosti instalace softwaru. Zlepšete svůj pracovní postup při vývoji v jazyce PHP pomocí tohoto uživatelsky přívětivého a spolehlivého nástroje.

## Co dělá PHP Serializer

PHP Serializer převádí JSON do řetězcového formátu PHP serialize() a serializované řetězce převádí zpět na formátované JSON. Délky řetězců v serializovaném formátu se počítají v bajtech, takže hodnota s diakritickými znaky má větší délku než počet jejích znaků.

Deserializace nikdy nevytváří objekty vašich tříd: objekt se vrátí jako __PHP_Incomplete_Class, přičemž jeho název třídy zůstane uložen v __PHP_Incomplete_Class_Name, což brání spuštění kódu z nedůvěryhodného vstupu. Objekty JSON se mění na pole PHP s řetězcovými klíči.

## Příklady s řešením

### JSON na serializovaný řetězec

a:4 je pole se čtyřmi položkami a délka každého řetězce se udává v bajtech.

**Vstup**

```
{"name": "Ada", "age": 36, "admin": true, "tags": ["php", "json"]}
```

**Výsledek**

```
a:4:{s:4:"name";s:3:"Ada";s:3:"age";i:36;s:5:"admin";b:1;s:4:"tags";a:2:{i:0;s:3:"php";i:1;s:4:"json";}}
```

### Serializovaný řetězec na JSON

Zürich má 6 písmen, ale 7 bajtů v UTF-8, takže jeho délka je s:7.

**Vstup**

```
a:2:{s:4:"city";s:7:"Zürich";s:3:"zip";s:4:"8001";}
```

**Výsledek**

```
{
  "city": "Zürich",
  "zip": "8001"
}
```

### Serializovaný objekt

Objekt se znovu nevytvoří jako skutečná instance stdClass. Jeho název třídy a vlastnosti se zobrazí jako data.

**Vstup**

```
O:8:"stdClass":1:{s:2:"id";i:7;}
```

**Výsledek**

```
{
  "__PHP_Incomplete_Class_Name": "stdClass",
  "id": 7
}
```

## Kódy serializovaných typů

| Kód | Typ | Příklad |
| --- | --- | --- |
| `N` | null | `N;` |
| `b` | Boolean, 1 pro true a 0 pro false | `b:1;` |
| `i` | Celé číslo | `i:36;` |
| `d` | Číslo s plovoucí desetinnou čárkou | `d:0.5;` |
| `s` | Řetězec, jehož délka se udává v bajtech | `s:3:"PHP";` |
| `a` | Pole s počtem položek a dvojicemi klíčů a hodnot | `a:1:{i:0;s:1:"x";}` |
| `O` | Objekt s délkou názvu třídy, názvem třídy a počtem jeho vlastností | `O:8:"stdClass":0:{}` |

## Často kladené otázky

### Jak serializovat data v PHP?

Chcete-li serializovat data v jazyce PHP, zadejte datovou strukturu (pole, objekt nebo skalární hodnotu) do příslušného pole a klikněte na tlačítko Serialize. Nástroj převede složité datové struktury do uložitelného řetězcového formátu pomocí serializačního protokolu jazyka PHP a vytvoří reprezentaci, kterou lze uložit do souborů, databází nebo přenášet po síti.

### Jak deserializovat data v PHP?

Chcete-li v jazyce PHP deserializovat data, zadejte serializovaný řetězec (obvykle začínající formátovacími indikátory jako a:, s: nebo O:) do příslušného pole a klikněte na tlačítko Deserialize. Nástroj převede řetězec zpět na původní datovou strukturu a zrekonstruuje pole, objekty a hodnoty přesně tak, jak byly před serializací.

### Proč je serializace v PHP užitečná?

Serializace převádí složité datové struktury na ukládatelné řetězce, což umožňuje trvalé ukládání dat v souborech nebo databázích, přenos dat po síti, ukládání dat relace, mechanismy ukládání do mezipaměti, užitečné zatížení fronty zpráv a zachování stavu objektu mezi požadavky. Deserializace načte původní data pro další použití.

### Jaké datové typy lze v PHP serializovat?

PHP serializuje řetězce, celá čísla, floaty, booleany, pole, objekty a hodnoty NULL. Zachovává klíče polí, vlastnosti objektů (public, protected, private), vnořené struktury a datové typy. Zdroje (jako jsou databázová připojení nebo rukojeti souborů) však serializovat nelze a vyžadují speciální zacházení.

### Existují při deserializaci dat nějaké bezpečnostní aspekty?

Ano, při deserializaci nedůvěryhodných dat může dojít k útokům PHP object injection. Útočníci mohou vytvořit škodlivé serializované řetězce, které spustí spuštění kódu prostřednictvím magických metod (__wakeup, __destruct). Nikdy neserializujte uživatelský vstup nebo externí data bez validace. Pro nedůvěryhodná data používejte JSON nebo implementujte omezení allowed_classes.

### Mohu serializovat a deserializovat vlastní objekty?

Ano, PHP serializuje vlastní objekty se zachováním všech vlastností a jejich hodnot. Aby však bylo možné objekty správně rekonstruovat, je třeba před deserializací načíst definice tříd. Pro vlastní serializační chování použijte automatické načítání, zahrňte soubory tříd nebo implementujte magické metody __sleep() a __wakeup().

### Jaký je rozdíl mezi serialize() a JSON?

Funkce PHP serialize() zachovává přesné datové typy, soukromé/chráněné vlastnosti a informace o třídě objektu, ale funguje pouze v jazyce PHP. JSON je jazykově nezávislý, čitelný, vhodný pro web a funguje ve všech jazycích, ale ztrácí soukromé vlastnosti a nezachovává přesné typy PHP. Pro ukládání pouze v jazyce PHP používejte funkci serialize(), pro rozhraní API a interoperabilitu JSON.

### Jak použít serializaci pro data relace?

PHP automaticky serializuje data relace ($_SESSION) pro uložení mezi požadavky. Při ukládání polí nebo objektů do relací je PHP serializuje do souborů nebo databází a při dalším načtení stránky je deserializuje. To umožňuje zachovat stav uživatele, nákupní košíky a ověřování při různých návštěvách stránek.

### Lze serializovaná data ukládat do databází?

Ano, ukládejte serializovaná data do sloupců databáze TEXT nebo BLOB. Serializovaná data však brání efektivnímu dotazování, indexování a vyhledávání. Serializaci používejte pro kompletní objekty uložené jako jednotlivé jednotky, ale pokud potřebujete dotazovat jednotlivá pole nebo udržovat datové vztahy, dejte přednost formátu JSON nebo normalizovaným tabulkám.

### Jak vypadají serializovaná data PHP?

Serializovaná data používají formátovací předpony: s:5: "hello" (řetězec), i:42 (celé číslo), a:2:{...} (pole), O:4: "User" (objekt). Čísla označují délku nebo počet. Formát je kompaktní, ale není čitelný pro člověka. Pro ladění a manipulaci s daty použijte náš nástroj pro převod mezi čitelným formátem JSON a serializovaným formátem PHP.

### Jak ladím serializovaná data?

Deserializujte data a zkontrolujte jejich strukturu, použijte print_r() nebo var_dump() na deserializované hodnoty, převeďte je do JSON pro lepší čitelnost, zkontrolujte neúplnou serializaci nebo poškození, ověřte dostupnost tříd pro objekty a použijte náš nástroj pro vizualizaci a pochopení složitých serializovaných struktur.

### Mohu serializovat uzávěry nebo anonymní funkce?

Standardní serializace PHP nepodporuje uzávěry. Pro tuto funkci použijte balíčky jako Opis Closure nebo Laravel SerializableClosure. Běžné funkce a metody v objektech lze serializovat, pokud jsou definovány ve třídách, ale anonymní funkce vyžadují zvláštní zacházení.

### Jaké jsou magické metody serializace?

__sleep() se spustí před serializací a vrátí pole vlastností k serializaci (užitečné pro vyloučení určitých dat). __wakeup() se spustí po deserializaci pro inicializaci. Funkce __serialize() a __unserialize() (PHP 7.4+) nabízejí větší kontrolu. Implementujte je pro vlastní chování serializace ve svých třídách.

### Jak přejít ze serializovaných dat na JSON?

Deserializovat existující data PHP, převést na pole/stdClass objekty a poté zakódovat do JSON. Aktualizujte kód tak, aby místo serialize()/unserialize() používal json_encode()/json_decode(). JSON je bezpečnější, čitelnější a kompatibilnější, ačkoli přijdete o soukromé vlastnosti a přesné zachování typu, které poskytuje serializace.

Vaše reklama zde?

[Napište nám](mailto:hi@dennn.is?subject=Inzerce%20na%20OneClick%20Pro)

[Reklama Sada pluginů připravená pro agenty pro WordPress.](https://sleekwp.com/?ref=oneclickpro)
