Как преобразовать Object в bytearray (любой объект в List <int>) - PullRequest
0 голосов
/ 11 апреля 2019

Как преобразовать объект в список (байты массива) У меня есть экземпляр (некоторый объект) из класса MyClass, и я хочу получить байты из этого объекта. Как это реализовать?

Код:

class MyClass {}

var myClass = MyClass()

List<int> getBytesFromObject(Object object) {
??? what here should be ???
}

so I can use it like:
List<int> bytes = getBytesFromObject(myClass)

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Не существует встроенного способа сериализации объектов Dart в двоичный файл.Но вы можете преобразовать объекты Dart в строку JSON и преобразовать эту строку в байтовый массив (а затем преобразовать байтовый массив обратно в строку и преобразовать эту строку в объекты).И то, и другое является частью пакета "dart: convert":

https://api.dartlang.org/stable/2.2.0/dart-convert/json-constant.html

https://api.dartlang.org/stable/2.2.0/dart-convert/utf8-constant.html

Обратите внимание, что вам нужно вручную реализовать "toJson ()"метод на ваших пользовательских классов.Существуют пакеты, которые могут помочь вам сгенерировать необходимый код:

https://pub.dartlang.org/packages/json_serializable

0 голосов
/ 11 апреля 2019

Вы можете использовать концепцию java stream , что в основном позволяет конвертировать любой объект в массив, который можно преобразовать в список с помощью метода Arrays.asList () . Вот простой пример:

 List objectToList(Object obj){
           ByteArrayOutputStream bos = new ByteArrayOutputStream();       
           ObjectOutputStream oos = new ObjectOutputStream(bos);       
           oos.writeObject(obj); 
           byte [] data = bos.toByteArray();
           return data.asList();

   }
...