Je travaille sur une application Silverlight 3 qui doit communiquer avec une application serveur PHP 5.2.13. Nous utilisons JSON.NET pour terminer le travail, mais j'ai des problèmes avec les dictionnaires.Sérialisation et désérialisation de tableaux vides dans le dictionnaire/objet
Je fais des expériences et essayer de désérialiser un objet qui contient un dictionnaire:
public Dictionary<string, Block> Table
{
get { return m_table; }
set { m_table = value; }
}
C# sérialise correctement et je suis heureux avec elle, mais du côté de PHP, lors de la sérialisation d'un objet équivalent qui a un Table
vide, cela ne fonctionnera pas.
$this->Table = array();
Le problème est que des tableaux vides, évidemment, ne sont pas considérés comme un tableau assoc et ils sont exportés sous forme []
au lieu de {}
.
J'ai pensé à ajouter quelque chose comme 'null' => null
au tableau (force assoc) et ensuite faire un peu de nettoyage dans le client, mais je ne contrôle pas les objets C# du client ni je peux les contraindre à être nulles donc .. Je suis bloqué sur celui-ci;)
Connaissez-vous une solution?
Merci pour votre temps, très apprécié :)
EDIT: Pour clarifier les choses, je ne peux pas contrôler la structure des deux, le C# et les objets PHP. Lors de mon test, j'ai créé un objet contenant un dictionnaire, mais l'objet trou est codé en une fois. Voici un rapport à la version simplifiée de celui-ci:
class Block
{
public $X = 0;
public $Y = 0;
public $Name = '';
public $Children = array();
public $Table = array();
public $Nested = null;
}
Où Table
doit être un dictionnaire et codé comme
echo json_encode(new Block());
Du côté PHP, vous utilisez la fonction 'json_encode' intégrée ou d'une autre bibliothèque? –
@SimpleCoder oui :) – DiogoNeves
Ok, bien. Consultez ma réponse - Je pense que cela résout votre problème :) –