[RESOLU]Deserializer un JSON
[RESOLU]Deserializer un JSON
Bonjour à tous,
J'essais dans mon application de faire un classement des joueurs. Je récupère de ma base de données un JSON qui a cette tête là => [{"userName":"Nrgumn","userScore":"7"},{"userName":"Remy","userScore":"8"}]
Dans cet exemple je récupère le pseudo et le score de 2 joueurs.
Est-ce que quelqu'un pourrait m'expliquer comment je peux faire pour pouvoir récupérer les informations de ces 2 joueurs ?
Merci beaucoup
Rémy
J'essais dans mon application de faire un classement des joueurs. Je récupère de ma base de données un JSON qui a cette tête là => [{"userName":"Nrgumn","userScore":"7"},{"userName":"Remy","userScore":"8"}]
Dans cet exemple je récupère le pseudo et le score de 2 joueurs.
Est-ce que quelqu'un pourrait m'expliquer comment je peux faire pour pouvoir récupérer les informations de ces 2 joueurs ?
Merci beaucoup
Rémy
Dernière édition par Nrgumn le 05 Déc 2019 17:18, édité 1 fois.
- boubouk50
- ModoGenereux
- Messages : 6267
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Deserialize un JSON
Tu as de la chance, j'ai vu ça Jeudi dernier. Pour les explications par contre, je ne suis pas au point.
https://stackoverflow.com/questions/370 ... listobject
Tu ne peux pas directement "deserializer" un tableau. Il te faut donc tricher en deux étapes avec 2 wrappers.
Tu vas créer une classe qui possède les champs de ce que tu dois récupérer et une autre qui est une liste ou un tableau de cette classe.
Il te faut modifier ta string pour pouvoir la "déserializer" comme une variable unique.
[... tu vois, je sais pas l'expliquer]
Premièrement, modifier ta string pour que ce soit l'affectation d'une seule variable et avoir un résultat comme suit:
Tu vois maintenant tu peux "déserializer" dans players.
Il faut donc définir players:
players est un tableau de player, ce que tu veux récupérer, il te faut donc la définir comme tu le ferais pour une variable unique
Voilà, maintenant tu as une variable players qui contient des player.
Tu peux donc "déserializer":
et tu peux ensuite accéder à chaque player depuis le tableau:
Car myPlayers contient une variable players qui est un tableau de player.
J'espère que je suis suffisamment pas trop obscur pour que tu aies compris
https://stackoverflow.com/questions/370 ... listobject
Tu ne peux pas directement "deserializer" un tableau. Il te faut donc tricher en deux étapes avec 2 wrappers.
Tu vas créer une classe qui possède les champs de ce que tu dois récupérer et une autre qui est une liste ou un tableau de cette classe.
Il te faut modifier ta string pour pouvoir la "déserializer" comme une variable unique.
[... tu vois, je sais pas l'expliquer]
Premièrement, modifier ta string
Code : Tout sélectionner
[{"userName":"Nrgumn","userScore":"7"},{"userName":"Remy","userScore":"8"}]
Code : Tout sélectionner
newJsonString = {"players":[{"userName":"Nrgumn","userScore":"7"},{"userName":"Remy","userScore":"8"}]}
Il faut donc définir players:
Code : Tout sélectionner
[Serializable]
public class Players
{
public Player[] players;
}
Code : Tout sélectionner
[Serializable]
public class Player
{
public string userName;
public int userScore;
}
Tu peux donc "déserializer":
Code : Tout sélectionner
Players myPlayers = JsonUtility.FromJson<Players>(newJsonString );
Code : Tout sélectionner
myPlayers.players[index]
J'espère que je suis suffisamment pas trop obscur pour que tu aies compris
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Deserialize un JSON
Merci beaucoup, c'est très détaillé.
J'essaye ça dès demain, je te dirai si ça à fonctionné.
Encore merci.
J'essaye ça dès demain, je te dirai si ça à fonctionné.
Encore merci.
Re: Deserialize un JSON
Bon je ne m'en sort pas.
J'ai un problème à la compilation sur la ligne
Voici l'erreur :
CS0029 Impossible de convertir implicitement le type 'Player' en 'Players'
Voici les 2 classes que j'ai créées
Voici ce que j'ai fait pour travailler le JSON que je reçois de mon script PHP
Ce qui me donne la chaîne de caractères suivante :
{"players":"[{"userName":"Nrgumn","userScore":"7"},{"userName":"R\u00e9my","userScore":"8"}]"}
Une idée ?
J'ai un problème à la compilation sur la ligne
Code : Tout sélectionner
Players myPlayers = JsonUtility.FromJson<Player>(newJsonString );
CS0029 Impossible de convertir implicitement le type 'Player' en 'Players'
Voici les 2 classes que j'ai créées
Code : Tout sélectionner
[Serializable]
public class Players
{
public Player[] players;
}
[Serializable]
public class Player
{
public string userName;
public int userScore;
}
Code : Tout sélectionner
newJsonString = "{" + '\u0022' + "players" + '\u0022' + ":" + '\u0022' + jsonString + '\u0022' + "}";
{"players":"[{"userName":"Nrgumn","userScore":"7"},{"userName":"R\u00e9my","userScore":"8"}]"}
Une idée ?
Re: Deserialize un JSON
Salut,
Ton Array est entre guillemets
{"players":"[{"userName":"Nrgumn","userScore":"7"},{"userName":"R\u00e9my","userScore":"8"}]"}
il ne faut pas
Ton Array est entre guillemets
{"players":"[{"userName":"Nrgumn","userScore":"7"},{"userName":"R\u00e9my","userScore":"8"}]"}
il ne faut pas
Re: Deserialize un JSON
Salut,
en complément du commentaire d'Alesk,
mais plutôt
le type de l'objet attendu doit correspondre au type demandé.
en complément du commentaire d'Alesk,
ce n'est pasNrgumn a écrit : ↑02 Déc 2019 22:42J'ai un problème à la compilation sur la ligneVoici l'erreur :Code : Tout sélectionner
Players myPlayers = JsonUtility.FromJson<Player>(newJsonString );
CS0029 Impossible de convertir implicitement le type 'Player' en 'Players'
Code : Tout sélectionner
Players myPlayers = JsonUtility.FromJson<Player>(newJsonString );
Code : Tout sélectionner
Players myPlayers = JsonUtility.FromJson<Players>(newJsonString );
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
- boubouk50
- ModoGenereux
- Messages : 6267
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Deserialize un JSON
Je plaide coupable pour les 2 coquilles
(je les ai rectifiées pour d'éventuels autres membres en souffrance)
(je les ai rectifiées pour d'éventuels autres membres en souffrance)
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Deserialize un JSON
Ça fonctionne nickel.
Merci à tous, super travail d'équipe
Merci à tous, super travail d'équipe