Jettison и JAXB автоматически изменяют тип данных в ответе JSON - PullRequest
4 голосов
/ 21 января 2011

Я использую Resteasy 2.0.1.GA и Resteasy-jettison-provider-1.2.GA с аннотациями JAXB, и когда у меня есть свойство String, содержащее все числа (т. Е. String groupName="1111";), ответ JSON будет отображать егокак число, удалив двойные кавычки.Если я изменю его на String groupName="oneoneoneoneone";, ответ JSON будет обрабатывать его как Sting и сохранять в нем двойные кавычки.Есть ли в любом случае, чтобы поставщик Jettison строго интерпретировал данные в ответ на основании их типа, а не его значения?

Ответы [ 2 ]

4 голосов
/ 21 января 2011

Это, кажется, неявная "особенность" Jettison;он пытается проанализировать фактические данные и выяснить, какой тип подходит лучше всего.Я сталкивался с этим раньше, и это бесит.

Я настоятельно рекомендую полностью отказаться от Jettison и использовать вместо него RestEasy Jackson . Джексон - библиотека гораздо лучшего качества, и она не страдает от этих "полезных" функций.Он также поддерживает аннотации JAXB точно так же, как Jettison.

0 голосов
/ 23 мая 2013

Имеет listner, который устанавливает следующее системное свойство при запуске сервера.

System.setProperty("jettison.mapped.typeconverter.class"
                  ,"org.codehaus.jettison.mapped.SimpleConverter");

Если для свойства установлено значение simpleConverter, то после этого значения всегда выводятся в виде строки, независимо от того, является ли тип данных строковым или int.

...