Alors voila, j'ai du passé la journée a cherche un peu partout sur le net (site français et Anglais) pour trouver le moyen de récuperer mes données présente dans mon fichier JSON (.json).
J'espérais pouvoir faire comme pour un fichier XML mais je n'y arrive pas, je me tourne donc vers vous en espérant trouver une solution.
Code :
public static void LoadJson(Map maMap)
{
var stream = File.OpenText("testDJ.json");
string jsonArray = stream.ReadToEnd();
dynamic result = JsonConvert.DeserializeObject(jsonArray);
foreach(var prop in jsonArray)
{
maMap.height = prop.height;
}
}
Mon problème est que je souhaite récupérer les valeurs présentes dans le fichier pour les attribuer aux propriétés de ma classe Map (tableau de valeurs pour mon tileset etc...)
En espérant que vous puissiez m'aider..
Merci !
- Edité par SissouU 10 octobre 2015 à 21:43:10
C#/Java/PHP/JS/HTML/CSS ||| En recherche de projets de groupe ! ;) || https://thomasgalibert.wordpress.com/
Copier les data de ton fichier JSON et les coller en tant que nouvelle classe de sérialisation sous Visual Studio (Edition > Collage spécial > Coller le code JSON en tant que classe).
Désérialiser le flux dans la classe fraîchement créée (plutôt que de passer par un dynamic), via un code dans ce style là (pour le coup, inutile de rajouter une dépendance de plus pour un truc aussi trivial selon moi).
MaStructureJson jsonData = null;
var serializer = new DataContractJsonSerializer(typeof(MaStructureJson));
using (var jsonStream = File.OpenText("testDJ.json"))
{ jsonData = serializer.ReadObject(jsonStream.BaseStream) as MaStructureJson; }
Salut, merci de vos réponses, mais à force de chercher et d'essayer des choses j'ai finalement trouvé ! Je passe le sujet en résolu
J'ai créer une classe LireMonJson a part qui me permet de l'implementer dans n'importe quel de mes projets où j'ai besoin de lire une map en Json, il me suffira juste d'adapter certaines choses à chaque fois
voici le code si quelqu'un en a besoin :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using System.Runtime.Serialization;
using System.IO;
using System.Runtime.Serialization.Formatters.Soap;
namespace MonPremierDJ
{
class LireMonJson
{
public static void LoadJson(Map maMap)
{
Layer lay = new Layer();
Tileset tlS = new Tileset();
Rootobject layer = new Rootobject();
var stream = File.OpenText("testDJ.json");
string json = stream.ReadToEnd();
Rootobject malist = (Rootobject)JsonConvert.DeserializeObject<Rootobject>(json);
maMap.Height = malist.height;
maMap.Width = malist.width;
maMap.Tileheight = malist.tileheight;
maMap.Tilewidth = malist.tilewidth;
layer.layers = malist.layers;
foreach (Layer laye in layer.layers)
{
lay = laye;
}
foreach(Tileset tl in malist.tilesets)
{
tlS.name = tl.name;
}
maMap.Name = tlS.name;
maMap.Data = lay.data;
stream.Close();
}
}
public class Rootobject
{
public int height { get; set; }
public Layer[] layers { get; set; }
public int nextobjectid { get; set; }
public string orientation { get; set; }
public Properties properties { get; set; }
public string renderorder { get; set; }
public int tileheight { get; set; }
public Tileset[] tilesets { get; set; }
public int tilewidth { get; set; }
public int version { get; set; }
public int width { get; set; }
}
public class Properties
{
}
public class Layer
{
public int[] data { get; set; }
public int height { get; set; }
public string name { get; set; }
public int opacity { get; set; }
public string type { get; set; }
public bool visible { get; set; }
public int width { get; set; }
public int x { get; set; }
public int y { get; set; }
}
public class Tileset
{
public int firstgid { get; set; }
public string image { get; set; }
public int imageheight { get; set; }
public int imagewidth { get; set; }
public int margin { get; set; }
public string name { get; set; }
public Properties1 properties { get; set; }
public int spacing { get; set; }
public int tileheight { get; set; }
public int tilewidth { get; set; }
public string transparentcolor { get; set; }
}
public class Properties1
{
}
}
C#/Java/PHP/JS/HTML/CSS ||| En recherche de projets de groupe ! ;) || https://thomasgalibert.wordpress.com/
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Mes applis Android