BusEngine.dll

BusEngine.Tools.Json (Class)

Класс отвечающий за конвертацию object содержащие различные типы данных в строку формата JSON и обратно - сериализация и десериализация.
Сериализация и десериализация необходима, чтобы не париться с многочисленными вариантами типов данных, а приводить их к одному стилю, где уже с лёгкостью сможете обрабатывать и настраивать условия их обработки.
В основе BusEngine.Tools.Json лежит библиотека Json.NET от NewTonSoft и данные по умолчанию конвертируются в "System.Collections.Generic.Dictionary" с добавлением обработки типов т.к. у Json.NET некрасивая реализация проверки и есть такая проблема, что библиотека не обрабатывает первый уровень массива (функции библиотеки не работают для первого уровня массива) в результате решено вручную обработать весь массив данных и привести его полностью к "System.Collections.Generic.Dictionary" отказывшись от возможности использования функционала Json.NET. Привлекательность библиотеки Json.NET в том, что Json.NET понимает комментарии в файле JSON, а такая возможность сильно упрощает разработку. Также посетите описание глобальных методов, полей и свойств System.Type от MicroSoft.

Методы

(string)BusEngine.Tools.Json.Encode(System.Type)

Метод (статический) уровня класса принимает System.Type|object|string|int|Dictionary|List данные для конвертации в строку json формат.

(object)BusEngine.Tools.Json.Decode(string, bool)

Метод (статический) уровня класса принимает string строку для конвертации в Dictionary (Newtonsoft.Json.Linq.JObject) формат, если нужно получить object формат, то вторым параметром установите true.

Наверх

Подклассы

Подклассов нет

Константы

Констант нет

Поля

Полей нет

Свойства

Свойств нет

События

Событий нет

Пример файла Program.cs

В коде отражено конвертирование объекта в json и обратно при старте своего плагина с названием "MyPlugin".

  1. /** API BusEngine.Game - пользовательский код */
  2. namespace BusEngine.Game {
  3.     /** API BusEngine.Plugin */
  4.     public class MyPlugin : BusEngine.Plugin {
  5.         internal class ProjectSettingDefault {
  6.             public static object content;
  7.             public ProjectSettingDefault() {
  8.                 content = new {
  9.                     assets = new string[] {"GameData"},
  10.                     code = new string[] {"Code"},
  11.                     libs = new {
  12.                         name = "BusEngine",
  13.                         shared = new {
  14.                             Any = "",
  15.                             Android = "",
  16.                             Win = "",
  17.                             Win_x64 = "",
  18.                             Win_x86 = "",
  19.                         },
  20.                     },
  21.                 };
  22.             }
  23.         }
  24.         // при запуске BusEngine до создания формы
  25.         public override void Initialize() {
  26.             BusEngine.Log.Info(BusEngine.Tools.Json.Encode(new ProjectSettingDefault()));
  27.             BusEngine.Log.Info(BusEngine.Tools.Json.Decode(BusEngine.Tools.Json.Encode(new ProjectSettingDefault())));
  28.         }
  29.     }
  30.     /** API BusEngine.Plugin */
  31. }
  32. /** API BusEngine.Game - пользовательский код */
Наверх