bonsoir,
après pas mal de recherche et test, voila une méthode qui fonctionne pour extraire les données d'un JSON avec liste ou array :
- créer une classe avec les éléments pour un mot, par exemple :
Code : Tout sélectionner
[System.Serializable]
public class WordsData
{
public string word;
public int difficulty;
public string[] definitions;
}
attention a ce que les noms de variable soient identiques a celle du JSON (word, difficulty..)
ensuite créer une classe, d'un array de la classe précédente, par exemple :
Code : Tout sélectionner
[System.Serializable]
public class WordsAll
{
public WordsData[] AllData;
}
idem, attention a l'orthographe des données (AllData)
ensuite, lire le fichier JSON et le stocker dans un string, puis décomposer le string suivant la claasse untilisée, ce qui donnerai :
Code : Tout sélectionner
string path = "C:/Users/Julien/Desktop/test 1.txt"; // Remplacez ceci par le chemin de ton fichier JSON
string fromJSON = File.ReadAllText(path);
WordsAll WordsList= JsonUtility.FromJson<WordsAll>(fromJSON);
tu as donc un array de classe "WordsData". et par exemple, pour savoir combien de définitions a le premier mot :
Code : Tout sélectionner
print(WordsList.AllData[0].definitions.Length); // retoure 2 dans l'exemple
le code complet de mon exemple :
Code : Tout sélectionner
using UnityEngine;
using System.IO;
[System.Serializable]
public class WordsData
{
public string word;
public int difficulty;
public string[] definitions;
}
[System.Serializable]
public class WordsAll
{
public WordsData[] AllData;
}
public class ToJSON : MonoBehaviour
{
void Start()
{
string path = "C:/Users/Julien/Desktop/test 1.txt"; // Remplacez ceci par le chemin de ton fichier JSON
string fromJSON = File.ReadAllText(path);
WordsAll WordsList = JsonUtility.FromJson<WordsAll>(fromJSON);
print(WordsList.AllData[0].definitions.Length); // retoure 2 dans l'exemple
}
}
ensuite pour sortir au hasard, un random et un stockage des mots déjà sortis par exemple.
j'espere que ça va aider,
PS :
Attention, ton exemple de JSON as des erreur, pas exploitable en l'état (sans compter les ...), il manque un guillement avant Mot-1 et les guillemets ne sont pas les bons une fois que j'ai fait copier collé :
Code : Tout sélectionner
{"AllData":[
{"word":"MOT-1", "difficulty":1, "definitions":["Définition-1","Définition-2"]},
{"word":"MOT-2", "difficulty":2, "definitions":["Définition-1","Définition-2","Définition-3"]},
{"word":"MOT-3", "difficulty":3, "definitions":["Définition-1","Définition-2","Définition-3","Définition-4"]}
]}