J'ai un soucis concernant une écriture dans un JSON. J'ai un char[] que j'enregistre dedans, mais pour une raison que j'ignore mes char sont convertis par leur valeur ASCII. Pour le contexte, j'ai simplement crée un bouton qui au clic crée un fichier JSON avec un formattage correct que je peux ensuite remplir manuellement.
Donc en soi que ce soit des valeurs ASCII n'est pas bloquant car je peux réécrire dessus à la main, mais je souhaite quand même comprendre cette situation.
Voici les scripts (je n'ai pas inclus toutes les déclarations de variables ça n'est pas pertinent) :
Mon wrapper de données JSON
Code : Tout sélectionner
[System.Serializable]
public class JSON_Container
{
public List<JSON_CardsInfos> cardsInfos;
}
Code : Tout sélectionner
[System.Serializable]
public class JSON_CardsInfos
{
public string cardName;
public string cardDesc;
public char[] toTakeLetters;
}
Code : Tout sélectionner
public class CardGenerator : MonoBehaviour
public void CreateBaseJSONifNull()
{
if (!File.Exists(JSONpath))
{
cardsInfosContainer = new JSON_Container();
cardsInfosContainer.cardsInfos = new List<JSON_CardsInfos>();
for (int i = 0; i < 2; i++)
{
JSON_CardsInfos cardInfos = new JSON_CardsInfos();
cardInfos.cardName = "" + i;
cardInfos.cardDesc = "Description : " + i;
cardInfos.toTakeLetters = new char[3] { 'N', 'E', 'W' };
cardsInfosContainer.cardsInfos.Add(cardInfos);
}
SaveJSON();
}
else
Debug.Log("Un fichier JSON est déjà présent à l'emplacement dédié");
}
void SaveJSON()
{
string jsonData = JsonUtility.ToJson(cardsInfosContainer, true);
File.WriteAllText(JSONpath, jsonData);
}
Code : Tout sélectionner
{
"cardsInfos": [
{
"cardName": "0",
"cardDesc": "Description : 0",
"toTakeLetters": [
78,
69,
87
]
},
{
"cardName": "1",
"cardDesc": "Description : 1",
"toTakeLetters": [
78,
69,
87
]
}
]
}
Code : Tout sélectionner
File.WriteAllText(JSONpath, jsonData);
Code : Tout sélectionner
File.WriteAllText(JSONpath, jsonData, System.Text.Encoding.UTF8);
Code : Tout sélectionner
File.WriteAllText(JSONpath, jsonData, System.Text.Encoding.Unicode);
Et voici comment j'ai crée le bouton dans l'Inspector si cela intéresse quelqu'un :
Code : Tout sélectionner
[CustomEditor(typeof(CardGenerator))]
public class CardGeneratorInspector : Editor
{
public override void OnInspectorGUI()
{
DrawDefaultInspector();
CardGenerator cardGenerator = (CardGenerator)target;
EditorGUILayout.Space();
if (GUILayout.Button("Générer un JSON vierge à remplir si inexistant"))
{
cardGenerator.CreateBaseJSONifNull();
}
EditorGUILayout.Space();