Сериализация и десериализация карты - PullRequest
0 голосов
/ 01 октября 2019

Может быть, я сейчас только тупой, но я очень тяжело боролся.

Я пишу сетевое приложение, которое сейчас взаимодействует с другой библиотекой. Сообщения, создаваемые этой библиотекой, имеют вид Map<Path, Object>. Эти сообщения теперь должны быть сериализованы. Я не знаю, к какому типу относятся эти Object. Они передаются только между двумя объектами, которые могут с ними работать, но для этого нужно сериализоваться.

Однако я изо всех сил пытаюсь понять, как это сделать. Я уже пытался с Gson, но не понимаю, как ее решить.

Код выглядит примерно так:

public interface Path extends Serializable{}

public interface Network{

    public Map<Path, Object> getSendMessages();

    public void receiveMessage(Map<Path, Object> message);

}

public class Main {

    public static void main(String[] args) {
       Network nw1 = NetworkProvider.getNetwork();
       Network nw2 = NetworkProvider.getNetwork();
       //I don't know what these actually do with the messages.
       while(true) {
           Map<Path, Object> message = nw1.getSendMessages();
           //__________What to do here?__________________

           SerializedMessage serializedMessage = ....
           Map<Path, Object> deserializedMessage = ....

           //____________________________________________
           nw2.receiveMessage(deserializedMessage);
       }
    }

}

}

1 Ответ

1 голос
/ 01 октября 2019

Вы можете легко сериализовать и десериализовать объект Map, используя ObjectMapper из Jackson.

Это пример сериализации:

ObjectMapper mapper = new ObjectMapper();
String jsonResult = mapper.writerWithDefaultPrettyPrinter()
  .writeValueAsString(message);

Для получения дополнительной информации,проверьте эту ссылку:

Сериализация карты

...