Ответы пользователя по тегу JSON
  • Кто может помочь разобраться с парсингом json в C#? Или дать пример парсинга?

    @Oxoron
    Шарпер
    Идешь на json2sharp.com, там вбиваешь текст из своего файла.
    Тыкаешь Generate.

    Получаешь набор классов:
    public class GameResultSetings
    {
        public int TargetPoint { get; set; }
    }
    
    public class GameLevel
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Rows { get; set; }
        public int Cols { get; set; }
        public List<int> TilesLayout { get; set; }
        public GameResultSetings GameResultSetings { get; set; }
    }
    
    public class RootObject
    {
        public List<GameLevel> GameLevels { get; set; }
    }


    Потом снова глядишь ответы тут, выдираешь код
    internal static class Serializer
        {
            internal static void Serialize<T>(this T arg, string fileName)
            {
                string res = JsonConvert.SerializeObject(arg, Formatting.Indented);
                File.WriteAllText(fileName,res);
            }
    
            internal static T Deserialize<T>(string fileName)
            {
                string json = File.ReadAllText(fileName);
                T res = JsonConvert.DeserializeObject<T>(json);
                return res;
            }
        }

    internal можешь поменять на public.

    Там где тебе нужны данные из файла прописываешь
    var yourFileFullPath = ...; // Здесь путь к твоему файлу
    var gameLevels = Serializer.Deserialize<RootObject>(yourFileFullPath).GameLevels;


    В переменной gameLevels у тебя хранится список уровней (List<GameLevel>), используй его с умом. Удачи.

    Upd1. Не забудь подключить библиотеку Newtonsoft.json. Как это сделать в Unity - не в курсе, погугли или еще вопрос на тостере задай. Но лучше сначала загугли.
    Ответ написан
  • Проблемы с Десериализацией в готовый объект. Как преобразовать bool тип в '1' или '0'?

    @Oxoron
    Шарпер
    Сделай класс BoolIntHybrid, у него неявные приведения к Int32 и string.
    Ответ написан
    Комментировать
  • Кто может дать пример парсинга json в C#?

    @Oxoron
    Шарпер
    internal static class Serializer
        {
            internal static void Serialize<T>(this T arg, string fileName)
            {
                string res = JsonConvert.SerializeObject(arg, Formatting.Indented);
                File.WriteAllText(fileName,res);
            }
    
            internal static T Deserialize<T>(string fileName)
            {
                string json = File.ReadAllText(fileName);
                T res = JsonConvert.DeserializeObject<T>(json);
                return res;
            }
        }

    Этот класс сериализует\десериализует объекты.

    public class Item 
    {
    ...
    public string title{get; set;}
    public string url{get;set;}
    ...
    }

    Это класс одной записи. Для сериализации используйте автосвойства (те самые get; set;), обязательно public.

    public class Response
    {
    public int count{get;set;}
    public List<Item> items{get; set;}
    }


    Для получения данных используете код вроде
    string pathToFIle = @"C:\temp\anyFile";
    Response response = Serializer.Deserialize<Response>(pathToFile);
    String[] titles = response.items.Select(item => item.title).ToArray(); // Массив названий
    String[] urls = response.items.Select(item => item.url)ToArray(); // Массив адресов


    библиотека: newtonsoft.json.dll

    Если надо - могу скинуть готовый пример (на тостере есть личка?).

    Также посетите json2csharp.com
    Вставьте в поле свой Json-образец, сразу получите необходимые классы.
    Ответ написан
    10 комментариев
  • Никак не могу разобраться с Json в c#?

    @Oxoron
    Шарпер
    Regex - это достаточно стандартное средство? Если нет - можно юзать String.Split() по кавычкам.
    Но вообще, вариант Pavel Osadchiy мне нравится больше всего (вторая его часть):
    А вообще лучше создать класс, в который можно десериализовать json. И потом десериализуем в него с помощью Newtonsoft .Json
    Ответ написан
    Комментировать