users@jaxb.java.net

Re: JSON unmarshaling problem

From: Pavel Bucek <pavel.bucek_at_oracle.com>
Date: Thu, 09 Dec 2010 10:14:48 +0100

Hello Christopher,

which version of jaxb (and jersey) are you using?

Pavel

On 12/9/10 10:08 AM, Christopher Schmidt wrote:
> Hi all, I want to create Xml root elements for the following JSON
> structure:
>
> [ {
> "start" : "http://localhost:7474/db/data/node/3",
> "nodes" : [ "http://localhost:7474/db/data/node/3",
> "http://localhost:7474/db/data/node/1" ],
> }, {
> "start" : "http://localhost:7474/db/data/node/3",
> "nodes" : [ "http://localhost:7474/db/data/node/3",
> "http://localhost:7474/db/data/node/2" ],
> } ]
>
> I am using a REST interface, Jersey as REST client library and Scala.
> If I use Scala objects like these:
>
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlRootElement
> class GetPath {
> var array:java.util.List[TraversePath] = _
> }
>
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlRootElement
> class TraversePath {
> var start:String = _
> var nodes . . .
> }
>
> I get the following error:
>
> java.lang.ArrayIndexOutOfBoundsException: -1
> at java.util.ArrayList.get(ArrayList.java:324)
> at
> com.sun.jersey.json.impl.reader.JsonXmlStreamReader.valueRead(JsonXmlStreamReader.java:162)
> at
> com.sun.jersey.json.impl.reader.JsonXmlStreamReader.readNext(JsonXmlStreamReader.java:327)
> at
> com.sun.jersey.json.impl.reader.JsonXmlStreamReader.readNext(JsonXmlStreamReader.java:175)
> at
> com.sun.jersey.json.impl.reader.JsonXmlStreamReader.next(JsonXmlStreamReader.java:445)
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:192)
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339)
> at
> com.sun.jersey.json.impl.BaseJSONUnmarshaller.unmarshalJAXBElementFromJSON(BaseJSONUnmarshaller.java:103)
> at
> com.sun.jersey.json.impl.BaseJSONUnmarshaller.unmarshalFromJSON(BaseJSONUnmarshaller.java:92)
> at
> com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider.readFrom(JSONRootElementProvider.java:100)
> at
> com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.readFrom(AbstractRootElementProvider.java:106)
> at
> com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:549)
> at
> com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:502)
> at com.sun.jersey.api.client.WebResource.handle(WebResource.java:560)
>
> Any advice?
>
> --
> Christopher
> twitter: @fakod
> blog: http://blog.fakod.eu
>