Сжатие JSON в Scala - PullRequest
       7

Сжатие JSON в Scala

0 голосов
/ 24 июня 2019

Сжатие JSON с использованием сериализации и десериализации работает. Но хранение и перезагрузка сжатого JSON не работает.

После сохранения сжатого JSON в текстовом файле. Следующее приложение загружает этот файл и пытается его десериализовать. Следующее приложение загружает файл и читает построчно как текст, как мне преобразовать текст в byteArray, чтобы я мог десериализовать его обратно в JSON

Если я сериализую строку, беру результат и десериализую его, это работает. в ту минуту, когда я записываю файл serielse / сжатый json в файл и перезагружаю его в строковую переменную, а затем пытаюсь десеризовать его, он не работает.

Я знаю, что проблема заключается в хранении и перезагрузке сжатого JSON

def serialise(value: Any): Array[Byte] = {
    val stream: ByteArrayOutputStream = new ByteArrayOutputStream()
    val oos = new ObjectOutputStream(stream)
    oos.writeObject(value)
    oos.close()
    stream.toByteArray
  }

  def deserialise(bytes: Array[Byte]): Any = {
    val ois = new ObjectInputStream(new ByteArrayInputStream(bytes))
    val value = ois.readObject
    ois.close()
    value
  }

// РАБОТАЕТ (ниже)

def main(args: Array[String]): Unit = {
   val json_msg_string = "{\"data_type\":\"input\"}
   val s_result: Array[Byte] = serialise(json_msg_string)
   val d_result = deserialise(s_result)
}

// НЕ работает (ниже)

def main(args: Array[String]): Unit = {

   val json_msg_string = "{\"data_type\":\"input\"}
   val s_result: Array[Byte] = serialise(json_msg_string)

   // write to file
   new PrintWriter("/home//test_json_compressed.txt") { write(s_result.toString); close }

   // reload file
   for (line <- Source.fromFile(filename).getLines) {
      deserialise(line)
    }
}
  1. Какой самый лучший и быстрый способ сжатия JSON (Scala)
  2. Как сохранить сжатый JSON (Scala)
  3. Как перезагрузить сжатый JSON и преобразовать его обратно в JSON (Scala)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...