Hi Peff,
You could use the Jackson JSON providers
as described in [1]? The configuration consists of just one
RC parameter, so should not be painful.
Does it work for you?
~Jakub
[1]
http://jersey.java.net/nonav/documentation/latest/json.html#d0e1960
On 01/05/2011 03:33 PM, Peff wrote:
> Hi together,
>
> In order to solve two common issues with the json parser (no brackets 
> with
> arrays of the size 1, integers have quotes like strings) i use the
> JSONConfiguration.natural().build() configuration.
>
> With that configuration I have to new problems now and I would be 
> happy if
> you could help me.
>
> 1. When a ArrayList<Integer> is being parsed (/A/), the integer values 
> are
> returned as if they were strings. So /A/ returns:
> {"list1":["1","3"],"nummer":2,"nummer2":99} where I expect it to return
> {"list1":[1,3],"nummer":2,"nummer2":99} since 1 and 3 are integers. 
> When an
> Integer like nummer2 is parsed as a normal variable it is correctly 
> parsed
> as integer.
> Does somebody have a recommendation how I get jersey to pars these 
> values as
> integers?
>
> 2. My seconds questions concerns /B/. The only solution I found so far 
> was
> to explicitly list all class names in cTypes to parse them later on 
> with the
> natural setting. It seems to be a pain to write all the 60 different 
> classes
> in this list (and I'm surly will forget some in the future) so I'm 
> looking
> for a possibility to simply tell jersey to always use the natural 
> setting.
> Does somebody know if and how this is possible?
>
> Thank you very much for your help!
>
> Stefan Peff
>
> -----------------------------------
> Jersey-bundle-1.4
>
> A ---------------------------------
>
>         @Path("arraylistetest")
>         @GET
>         @Produces(MediaType.APPLICATION_JSON)
>         public TestArrayList arraylisteTest() {
>                 TestArrayList testArrayList = new TestArrayList();
>                 return testArrayList;
>         }
>
> B ---------------------------------
>
> @Provider
> public final class JAXBContextResolver implements
> ContextResolver<JAXBContext> {
>
>     private final JAXBContext context;
>
>     private final Set<Class> types;
>
>     private final Class[] cTypes = {TestArrayList.class};
>
>     public JAXBContextResolver() throws Exception {
>         this.types = new HashSet(Arrays.asList(cTypes));
>         this.context = new
> JSONJAXBContext(JSONConfiguration.natural().build(), cTypes);
>     }
>
>     public JAXBContext getContext(Class<?> objectType) {
>         return (types.contains(objectType)) ? context : null;
>     }
> }
>
> C ------------------------------------
>
> @XmlRootElement
> public class TestArrayList {
>         @XmlElement
>         public ArrayList<Integer> list1;
>         @XmlElement
>         public int nummer;
>         @XmlElement
>         public Integer nummer2;
>
>         public TestArrayList() {
>                 super();
>                 list1 = new ArrayList<Integer>();
>                 list1.add(1);
>                 nummer = 2;
>                 nummer2 = 99;
>         }
> }
>
>
>
> ------------------------------------------------------------------------
> View this message in context: JSON: Integervalues of ArrayListhave 
> quotes (in natural notation setting) 
> <http://jersey.576304.n2.nabble.com/JSON-Integervalues-of-ArrayList-Integer-have-quotes-in-natural-notation-setting-tp5892111p5892111.html>
> Sent from the Jersey mailing list archive 
> <http://jersey.576304.n2.nabble.com/> at Nabble.com.