Решение для интеграции сериализации в Java и C #? - PullRequest
0 голосов
/ 12 марта 2019

У меня есть два приложения, одно из которых построено на c #, другое - на JAVA.У них обоих есть «compareJsonService» и одна и та же логика.

Детали логики:

public void compareJsonService(int id,Person personFromCenter){
    PersonDTO person = personRepository.getByPK(id);
    if(!person.getJson().equals(JsonUtil.serialize(personFromCenter)){
        personRepository.updatePerson(convertPersonToDTO(personFromCenter,person));
    }
}

Объект personFromCenter является уникальным, независимо от того, является ли оно в приложении Java или приложении C #.Они получают personDTO из базы данных с помощью pk и сравнивают поле json, когда результат является быстрым, затем обновляются.

Но результат сериализации не равен, я думаю, что это вызвано различными механизмами сериализацииjava и c #.

они оба используют метод equals для сравнения выходных данных, затем всегда получают false (потому что их значения сравнения последовательных строк различаются). Поэтому они всегда обновляются.Проблема в том, что мне нужно решение, похожее на спокойный интерфейс, который передает объект Person и возвращает строку json, поэтому, используют ли этот сервис Java или c #, они получают один и тот же сериализованный вывод.

Итак, прежде чем я перенесу весь код c # на Java, сколько решений для решения проблемы? И какой из них самый простой?

1 Ответ

1 голос
/ 26 марта 2019

Просто превратите строку json в объект (например, с помощью библиотеки Джексона в Java) и сравните результат Java / C # Object. Даже если вы получите разные порядки в строке json, если вы сравните объект, вы сможете узнать, равны они или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...