# JSON Object to Serialized PHP Object történő átalakító

Egyszerűen szerializálhatja és deszerializálhatja az adatokat PHP nyelven sokoldalú PHP szerializáló és deszerializáló eszközünkkel. Ez az online segédprogram ideális azoknak a fejlesztőknek, akik összetett adatstruktúrákat szeretnének tárolható karakterláncokká alakítani, majd visszaállítani eredeti formájukat. Kezelje pontosan és hatékonyan adatait szoftvertelepítés nélkül. Egyszerűen használható és megbízható eszközünkkel hatékonyabbá teheti PHP fejlesztési munkafolyamatát.

## Mit végez a PHP szerializáló

A PHP szerializáló a JSON értéket a PHP serialize() formátumú karakterlánccá alakítja, a szerializált karakterláncokat pedig formázott JSON értékekké alakítja vissza. A szerializált formátumban a karakterláncok hossza bájtokban van megadva, ezért az ékezetes betűket tartalmazó érték hossza nagyobb, mint a karakterek száma.

A visszafejtés soha nem hoz létre objektumokat az Ön osztályaiból: az objektum __PHP_Incomplete_Class példányként tér vissza, az osztály neve pedig a __PHP_Incomplete_Class_Name mezőben marad, így a nem megbízható bemenet nem futtathat kódot. A JSON objektumok PHP tömbökké alakulnak, karakterlánc típusú kulcsokkal.

## Kidolgozott példák

### JSON szerializált karakterlánccá alakítása

A a:4 négy elemből álló tömb, és minden karakterláncnál bájtokban van megadva a hossz.

**Bemenet**

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

**Eredmény**

```
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";}}
```

### Szerializált karakterlánc átalakítása JSON értékké

A Zürich szó 6 betűből, de UTF-8-ban 7 bájtból áll, ezért a hossza s:7.

**Bemenet**

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

**Eredmény**

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

### Szerializált objektum

Az objektum nem valódi stdClass-példányként épül újra. Az osztály neve és tulajdonságai adatként jelennek meg.

**Bemenet**

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

**Eredmény**

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

## Szerializált típusok kódjai

| Kód | Típus | Példa |
| --- | --- | --- |
| `N` | null | `N;` |
| `b` | Logikai érték: 1 az igaz, 0 a hamis | `b:1;` |
| `i` | Egész szám | `i:36;` |
| `d` | Lebegőpontos szám | `d:0.5;` |
| `s` | Karakterlánc, bájtokban megadott hosszal | `s:3:"PHP";` |
| `a` | Tömb az elemek számával és a kulcs-érték párokkal | `a:1:{i:0;s:1:"x";}` |
| `O` | Objektum az osztálynév hosszával, az osztály nevével és a tulajdonságok számával | `O:8:"stdClass":0:{}` |

## Gyakran ismételt kérdések

### How do I serialize data in PHP?

Az adatok PHP nyelven történő szerializálásához írja be az adatstruktúrát (tömböt, objektumot vagy skalárértéket) a megadott mezőbe, majd kattintson a Serialize gombra. Az eszköz a PHP szerializálási protokolljával tárolható karakterlánc-formátummá alakítja az összetett adatstruktúrákat. Az így létrejövő reprezentáció fájlokba vagy adatbázisokba menthető, illetve hálózaton keresztül továbbítható.

### How do I deserialize data in PHP?

Az adatok PHP nyelven történő deszerializálásához írja be a szerializált karakterláncot (amely jellemzően olyan formátumjelölővel kezdődik, mint az a:, az s: vagy az O:) a megadott mezőbe, majd kattintson a Deserialize gombra. Az eszköz visszaalakítja a karakterláncot az eredeti adatstruktúrává, és pontosan a szerializálás előtti formában állítja helyre a tömböket, objektumokat és értékeket.

### Why is serialization useful in PHP?

A szerializálás összetett adatstruktúrákat alakít tárolható karakterláncokká. Így az adatok tartósan tárolhatók fájlokban vagy adatbázisokban, hálózaton keresztül továbbíthatók, munkamenetadatként menthetők, gyorsítótárazhatók, üzenetsorokban továbbíthatók, és az objektumok állapota a kérések között is megőrizhető. A deszerializálás visszaállítja az eredeti adatokat a további használathoz.

### What data types can be serialized in PHP?

A PHP szerializálja a karakterláncokat, egész számokat, lebegőpontos számokat, logikai értékeket, tömböket, objektumokat és NULL értékeket. Megőrzi a tömbkulcsokat, az objektumtulajdonságokat (nyilvános, védett és privát), a beágyazott struktúrákat és az adattípusokat. Az erőforrások (például adatbázis-kapcsolatok és fájlkezelők) azonban nem szerializálhatók, ezért külön kezelést igényelnek.

### Vannak biztonsági megfontolások az adatok deserializálásakor?

Igen, deszerializáláskor előfordulhatnak PHP objektuminjektálási támadások, ha nem megbízható adatokat használ. A támadók rosszindulatú szerializált karakterláncokat készíthetnek, amelyek mágikus metódusokon (__wakeup, __destruct) keresztül kódvégrehajtást váltanak ki. Soha ne deszerializáljon ellenőrzés nélkül felhasználói bemenetet vagy külső adatot. Nem megbízható adatokhoz használja a JSON megoldást, vagy alkalmazzon allowed_classes korlátozásokat.

### Can I serialize and deserialize custom objects?

Igen, a PHP szerializálja az egyéni objektumokat, és megőrzi minden tulajdonságukat és értéküket. A helyes visszaállításhoz azonban az osztálydefinícióknak be kell töltődniük a deszerializálás előtt. Használjon automatikus betöltést, csatolja be az osztályfájlokat, vagy valósítson meg __sleep() és __wakeup() mágikus metódusokat az egyéni szerializálási viselkedéshez.

### What's the difference between serialize() and JSON?

A PHP serialize() megőrzi a pontos adattípusokat, a privát/védett tulajdonságokat és az objektumosztály adatait, de csak PHP használható. A JSON nyelvfüggetlen, olvasható, webbarát és minden nyelven használható, de elveszíti a privát tulajdonságokat, és nem őrzi meg pontosan a PHP típusokat. PHP kizárólagos tároláshoz használja a serialize() formátumot; API-khoz és együttműködéshez pedig a JSON formátumot.

### How do I use serialization for session data?

A PHP automatikusan szerializálja a munkamenetadatokat ($_SESSION), hogy a kérések között tárolja őket. Amikor tömböket vagy objektumokat ment egy munkamenetbe, a PHP fájlokba vagy adatbázisokba szerializálja őket, majd a következő oldalbetöltéseknél deszerializálja. Így a felhasználói állapot, a bevásárlókosár és a hitelesítés az oldalmegtekintések között is megőrizhető.

### Can serialized data be stored in databases?

Igen, a szerializált adatok TEXT vagy BLOB típusú adatbázisoszlopokban tárolhatók. A szerializált adatokon azonban nehézkes a hatékony lekérdezés, indexelés és keresés. Használjon szerializálást, ha teljes objektumokat egyetlen egységként tárol, de egyedi mezők lekérdezéséhez vagy az adatok közötti kapcsolatok fenntartásához inkább a JSON formátumot vagy normalizált táblákat válasszon.

### What does serialized PHP data look like?

A szerializált adatok formátumát előtagok jelzik: s:5:"hello" (karakterlánc), i:42 (egész szám), a:2:{...} (tömb), O:4:"User" (objektum). A számok a hosszt vagy az elemszámot jelzik. A formátum tömör, de ember számára nem olvasható. Hibaelhárításhoz és adatkezeléshez használja eszközünket az olvasható JSON és a szerializált PHP formátum közötti átalakításhoz.

### How do I debug serialized data?

Az adatok deserializálása a struktúra vizsgálatához, a print_r() vagy a var_dump() használata a deserializált értékeken, a JSON-ba való konvertálás az olvashatóság érdekében, a hiányos szerializáció vagy a sérülés ellenőrzése, az objektumok osztályainak elérhetőségének ellenőrzése, valamint az eszközünk használata az összetett szerializált struktúrák vizualizálására és megértésére.

### Can I serialize closures or anonymous functions?

A szabványos PHP szerializáció nem támogatja a lezárásokat. Használjon olyan csomagokat, mint az Opis Closure vagy a Laravel SerializableClosure ehhez a funkcióhoz. Az objektumokban lévő normál függvények és metódusok szerializálhatók, ha osztályokban vannak definiálva, de a névtelen függvények speciális kezelést igényelnek.

### What are magic methods for serialization?

A __sleep() a szerializálás előtt fut le, és visszaadja a szerializálandó tulajdonságok tömbjét (hasznos bizonyos adatok kizárásához). A __wakeup() a deszerializálás után fut le inicializálás céljából. A __serialize() és a __unserialize() (PHP 7.4+) nagyobb kontrollt biztosítanak. Az egyéni szerializálási viselkedés érdekében valósítsa meg ezeket az osztályaiban.

### How do I migrate from serialized data to JSON?

Deszerializálja a meglévő PHP adatokat, alakítsa őket tömbökké vagy stdClass objektumokká, majd kódolja JSON formátumban. Frissítse a kódot, hogy a serialize()/unserialize() helyett a json_encode()/json_decode() megoldást használja. A JSON biztonságosabb, olvashatóbb és kompatibilisebb, de elveszíti a privát tulajdonságokat és a szerializálás által megőrzött pontos típusokat.

Hirdetne nálunk?

[Írjon nekünk e-mailt](mailto:hi@dennn.is?subject=Hirdet%C3%A9s%20a%20OneClick%20Pro%20oldalon)

[Hirdetés Az ügynökök számára kész plugincsomag a WordPress számára.](https://sleekwp.com/?ref=oneclickpro)
