Причина публикации JsonObject напрямую через RestTemplate не работает в вашем случае, потому что RestTemplate использует Jackson Serializer, а не метод toString.Сериализатор подберет внутреннюю структуру класса и превратит ее в представление json, где в качестве метода toString () вы получите ожидаемые данные json.
В вашем случае внутреннее представление, когдаserialized будет выглядеть примерно так:
"names":{"chars":"namesstring","string":"namesstring","valueType":"STRING"}
Это не та структура, которую вы ожидали, а отчасти то, как JsonObject хранит вашу структуру json внутри.(получение информации о типе и т. д.).
Однако, когда вы вызываете toString (), JsonObject дает вам то, что вы ожидали (то есть представление json без всех метаданных).
Короче говоря, вы думаете, что вы отправляете и что вы на самом деле отправляете, отличаются.Ошибка 400 возникает, вероятно, из-за того, что вызываемая вами конечная точка отклоняет фактический формат данных.
Вы можете убедиться в этом сами, отладив фактический вызов RestTemplate с помощью перехватчика.В качестве альтернативы попросите вашего клиента вызвать службу эха, чтобы увидеть полезную нагрузку.