Vai al contenuto

Convertitore da JSON Object a Serialized PHP Object

Serializza e deserializza facilmente i dati in PHP con il nostro versatile strumento di serializzazione e deserializzazione PHP. Questa utilità online è ideale per gli sviluppatori che vogliono convertire strutture di dati complesse in stringhe archiviabili e ripristinarle nella forma originale. Gestisci i dati in modo accurato ed efficiente senza installare software. Migliora il tuo flusso di lavoro di sviluppo PHP con questo strumento affidabile e facile da usare.

Cosa fa il PHP Serializer

Il PHP Serializer converte JSON nel formato stringa di PHP serialize() e riconverte le stringhe serializzate in JSON formattati. Le lunghezze delle stringhe nel formato serializzato sono conteggiate in byte, quindi un valore con lettere accentate ha una lunghezza maggiore rispetto al numero di caratteri.

La deserializzazione non crea mai oggetti delle vostre classi: un oggetto viene restituito come __PHP_Incomplete_Class, con il nome della classe conservato in __PHP_Incomplete_Class_Name, impedendo così a input non attendibili di eseguire codice. Gli oggetti JSON diventano array PHP con chiavi stringa.

Esempi svolti

JSON in una stringa serializzata

a:4 è un array con quattro voci e ogni stringa riporta la propria lunghezza in byte.

Input
{"name": "Ada", "age": 36, "admin": true, "tags": ["php", "json"]}
Risultato
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";}}

Una stringa serializzata in JSON

Zürich ha 6 lettere ma 7 byte in UTF-8, quindi la sua lunghezza è s:7.

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

Un oggetto serializzato

L'oggetto non viene ricostruito come una vera istanza di stdClass. Il nome della classe e le proprietà vengono mostrati come dati.

Input
O:8:"stdClass":1:{s:2:"id";i:7;}
Risultato
{
  "__PHP_Incomplete_Class_Name": "stdClass",
  "id": 7
}

Codici dei tipi serializzati

CodiceTipoEsempio
NnullN;
bBooleano, 1 per true e 0 per falseb:1;
iInteroi:36;
dNumero a virgola mobiled:0.5;
sStringa, con lunghezza in bytes:3:"PHP";
aArray, con il numero di voci e le coppie chiave-valorea:1:{i:0;s:1:"x";}
OOggetto, con la lunghezza e il nome della classe e il numero di proprietàO:8:"stdClass":0:{}

Domande frequenti

How do I serialize data in PHP?

Per serializzare i dati in PHP, inserisci la struttura dei dati (array, oggetto o valore scalare) nel campo apposito e fai clic sul pulsante Serialize. Lo strumento converte le strutture complesse in stringhe archiviabili usando il protocollo di serializzazione di PHP, creando una rappresentazione da salvare in file o database oppure trasmettere in rete.

How do I deserialize data in PHP?

Per deserializzare i dati in PHP, inserisci nel campo apposito la stringa serializzata (che in genere inizia con indicatori di formato come a:, s: o O:) e fai clic sul pulsante Deserialize. Lo strumento converte la stringa nella struttura di dati originale, ricostruendo array, oggetti e valori esattamente com'erano prima della serializzazione.

Why is serialization useful in PHP?

La serializzazione converte strutture di dati complesse in stringhe archiviabili, consentendo di conservare i dati in file o database, trasmetterli in rete, salvare dati di sessione, usare meccanismi di caching, creare payload per code di messaggi e preservare lo stato degli oggetti tra richieste. La deserializzazione recupera i dati originali per poterli riutilizzare.

What data types can be serialized in PHP?

PHP serializza stringhe, interi, numeri in virgola mobile, booleani, array, oggetti e valori NULL. Mantiene le chiavi degli array, le proprietà degli oggetti (pubbliche, protette e private), le strutture annidate e i tipi di dati. Le risorse, come connessioni al database o handle di file, non possono però essere serializzate e richiedono una gestione speciale.

Ci sono considerazioni sulla sicurezza quando si deserializzano i dati?

Sì, durante la deserializzazione di dati non attendibili possono verificarsi attacchi di injection di oggetti PHP. Gli aggressori possono creare stringhe serializzate malevole che attivano l'esecuzione di codice tramite metodi magici (__wakeup, __destruct). Non deserializzare mai input utente o dati esterni senza convalidarli. Per i dati non attendibili, usa JSON oppure imposta la restrizione allowed_classes.

Can I serialize and deserialize custom objects?

Sì, PHP serializza gli oggetti personalizzati mantenendone tutte le proprietà e i relativi valori. Tuttavia, le definizioni delle classi devono essere caricate prima della deserializzazione per ricostruire correttamente gli oggetti. Usa il caricamento automatico, includi i file delle classi oppure implementa i metodi magici __sleep() e __wakeup() per personalizzare la serializzazione.

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

PHP serialize() mantiene i tipi di dati esatti, le proprietà private e protette e le informazioni sulla classe degli oggetti, ma funziona solo in PHP. JSON è indipendente dal linguaggio, leggibile, adatto al web e compatibile con tutti i linguaggi, ma perde le proprietà private e non mantiene i tipi PHP precisi. Usa serialize() solo per l'archiviazione PHP; JSON per API e interoperabilità.

How do I use serialization for session data?

PHP serializza automaticamente i dati di sessione ($_SESSION) per conservarli tra una richiesta e l'altra. Quando salvi array o oggetti nelle sessioni, PHP li serializza in file o database e li deserializza ai successivi caricamenti della pagina. Ciò consente di mantenere lo stato dell'utente, il carrello e l'autenticazione durante la navigazione.

Can serialized data be stored in databases?

Sì, puoi archiviare i dati serializzati in colonne TEXT o BLOB del database. Tuttavia, questi dati non consentono query, indicizzazione e ricerca efficienti. Usa la serializzazione per archiviare oggetti completi come unità singole, ma preferisci JSON o tabelle normalizzate quando devi interrogare singoli campi o mantenere relazioni tra i dati.

What does serialized PHP data look like?

I dati serializzati usano prefissi di formato: s:5:"hello" (stringa), i:42 (intero), a:2:{...} (array), O:4:"User" (oggetto). I numeri indicano la lunghezza o il conteggio. Il formato è compatto, ma non leggibile. Usa il nostro strumento per convertire tra JSON leggibile e il formato serializzato PHP, utile per il debug e la manipolazione dei dati.

How do I debug serialized data?

Deserializzare i dati per ispezionarne la struttura, usare print_r() o var_dump() sui valori deserializzati, convertire in JSON per la leggibilità, controllare la serializzazione incompleta o la corruzione, verificare la disponibilità di classi per gli oggetti e usare il nostro strumento per visualizzare e comprendere strutture serializzate complesse.

Can I serialize closures or anonymous functions?

La serializzazione standard di PHP non supporta le chiusure. Per questa funzionalità si possono usare pacchetti come Opis Closure o SerializableClosure di Laravel. Le funzioni e i metodi regolari degli oggetti possono essere serializzati se sono definiti nelle classi, ma le funzioni anonime richiedono una gestione speciale.

What are magic methods for serialization?

__sleep() viene eseguito prima della serializzazione e restituisce un array delle proprietà da serializzare (utile per escludere determinati dati). __wakeup() viene eseguito dopo la deserializzazione per inizializzare l'oggetto. __serialize() e __unserialize() (PHP 7.4+) offrono un controllo maggiore. Implementali per personalizzare il comportamento di serializzazione delle tue classi.

How do I migrate from serialized data to JSON?

Deserializza i dati PHP esistenti, convertili in array o oggetti stdClass, poi codificali in JSON. Aggiorna il codice per usare json_encode()/json_decode() al posto di serialize()/unserialize(). JSON è più sicuro, leggibile e compatibile, anche se perderai le proprietà private e la conservazione esatta dei tipi garantite dalla serializzazione.

Informazioni su OneClick Pro

OneClick Pro è una raccolta gratuita di oltre 150 strumenti web per le attività quotidiane: convertire immagini e unità di misura, formattare e convalidare codice, controllare domini e SEO, lavorare con testi, date e numeri. Ogni strumento funziona senza registrazione né abbonamento; i dati inseriti vengono usati solo per calcolare il risultato e non vengono mai salvati. Usatelo come cassetta degli attrezzi per attività occasionali oppure aggiungete ai preferiti gli strumenti che usate ogni giorno.