You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by fahman_dude <fa...@hotmail.com> on 2013/02/02 21:01:09 UTC
JSON marshalling of @XmlIDRef
Hi,
I have a question on marshalling mechanics of @XmlIDREF. I have these two
classes Assignment and Project and are able to marshal and unmarshal them
with CXF default configuration just nicely.
public class Assignment {
Project project;
int position;
@XmlIDREF
@XmlAttribute
public Project getProject() {
return project;
}
public int getPosition() {
return position;
}
}
public class Project {
String id;
@XmlID
public String getId() {
return id;
}
}
JSON looks like this:
{"assignment":{"@project":"123","position":567}},
{"project":{"id":"123",...}}
But, the question is - how do I control how the @XmlIDREF is represented in
marshaled JSON message. Currently it is marshalled as "@project":"123". What
if we would like to marshall it as "$project":"123"? So that it look like
this:
{"assignment":{"$project":"123","position":567}},
{"project":{"id":"123",...}}
Thanks
Reinis
--
View this message in context: http://cxf.547215.n5.nabble.com/JSON-marshalling-of-XmlIDRef-tp5722641.html
Sent from the cxf-user mailing list archive at Nabble.com.
Re: JSON marshalling of @XmlIDRef
Posted by Sergey Beryozkin <sb...@gmail.com>.
On 02/02/13 20:01, fahman_dude wrote:
> Hi,
>
> I have a question on marshalling mechanics of @XmlIDREF. I have these two
> classes Assignment and Project and are able to marshal and unmarshal them
> with CXF default configuration just nicely.
>
> public class Assignment {
> Project project;
> int position;
>
> @XmlIDREF
> @XmlAttribute
> public Project getProject() {
> return project;
> }
>
> public int getPosition() {
> return position;
> }
> }
>
> public class Project {
>
> String id;
>
> @XmlID
> public String getId() {
> return id;
> }
> }
>
> JSON looks like this:
>
> {"assignment":{"@project":"123","position":567}},
> {"project":{"id":"123",...}}
>
> But, the question is - how do I control how the @XmlIDREF is represented in
> marshaled JSON message. Currently it is marshalled as "@project":"123". What
> if we would like to marshall it as "$project":"123"? So that it look like
> this:
>
> {"assignment":{"$project":"123","position":567}},
> {"project":{"id":"123",...}}
Jettison can use "$" but only to mark the text coming in as part of the
mixed content, it won't know that a given property such as "project"
needs to be marked with "$".
Have a look at this code:
https://github.com/Talend/tesb-rt-se/blob/master/examples/cxf/jaxrs-advanced/common/src/main/java/common/advanced/Person.java
(at the very bottom), I copied it from one of StackOverflow pages - can
not find right now - you can customize I guess how the reference is
represented, so in you case you may try to represent it say as
"projectIdRef" for the JSON consumer to figure out what it represents
HTH, Sergey
>
> Thanks
> Reinis
>
>
>
> --
> View this message in context: http://cxf.547215.n5.nabble.com/JSON-marshalling-of-XmlIDRef-tp5722641.html
> Sent from the cxf-user mailing list archive at Nabble.com.
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com