You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Karl Kildén <ka...@gmail.com> on 2016/11/03 16:32:44 UTC

All fields null when unmarshal json using jax-rs Client

Hi!

I am trying to consume a restful service with TomEE 7 and jax-rs Client. I
copied the DTO between the projects. The other system uses a fairly old
jersey impl and I can't change that for now.

I have this DTO

import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement
public class HelloWorldDTO {

private String test = "test";

public String getTest() {
return test;
}

public void setTest(String test) {
this.test = test;
}
}

The service I am calling gives this response in the browser when I try the
service that way:

{"helloWorldDTO":{"test":"test"}}

The way I doing the call is:
client.target(builder).request(MediaType.APPLICATION_JSON).get(HelloWorldDTO.class)

The URL is correct and response code is correct etc... I get the
entity but the property test is null but it was sent as "test".


Any tips on how to debug this? Should I try adding a wrapper on any
side? :) I think I did try that but it did not help. In my real use
case I need to send several and I have a wrapper with a List. When it
came across as null I tried just with a simple property and still the
problem persists.

Thankful for advice!


Cheers

Re: All fields null when unmarshal json using jax-rs Client

Posted by Karl Kildén <ka...@gmail.com>.
Ah damn it... It was the wrapper thing again. I missed using naming convention when I wrapped. Thanks again!

Skickat från min iPhone

> 3 nov. 2016 kl. 17:41 skrev Romain Manni-Bucau <rm...@gmail.com>:
> 
> Hi
> 
> you didnt register jettison so the wrapper is not handled by default json
> mapper which would expects {"test":"test"}
> 
> Another solution is to rewrite HelloWorldDTO to add a wrapper with a field
> hellowWorldDto of type HelloWorldDTO
> 
> 
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://blog-rmannibucau.rhcloud.com> | Old Blog
> <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
> <https://javaeefactory-rmannibucau.rhcloud.com>
> 
> 2016-11-03 17:32 GMT+01:00 Karl Kildén <ka...@gmail.com>:
> 
>> Hi!
>> 
>> I am trying to consume a restful service with TomEE 7 and jax-rs Client. I
>> copied the DTO between the projects. The other system uses a fairly old
>> jersey impl and I can't change that for now.
>> 
>> I have this DTO
>> 
>> import javax.xml.bind.annotation.XmlRootElement;
>> 
>> 
>> @XmlRootElement
>> public class HelloWorldDTO {
>> 
>> private String test = "test";
>> 
>> public String getTest() {
>> return test;
>> }
>> 
>> public void setTest(String test) {
>> this.test = test;
>> }
>> }
>> 
>> The service I am calling gives this response in the browser when I try the
>> service that way:
>> 
>> {"helloWorldDTO":{"test":"test"}}
>> 
>> The way I doing the call is:
>> client.target(builder).request(MediaType.APPLICATION_
>> JSON).get(HelloWorldDTO.class)
>> 
>> The URL is correct and response code is correct etc... I get the
>> entity but the property test is null but it was sent as "test".
>> 
>> 
>> Any tips on how to debug this? Should I try adding a wrapper on any
>> side? :) I think I did try that but it did not help. In my real use
>> case I need to send several and I have a wrapper with a List. When it
>> came across as null I tried just with a simple property and still the
>> problem persists.
>> 
>> Thankful for advice!
>> 
>> 
>> Cheers
>> 

Re: All fields null when unmarshal json using jax-rs Client

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi

you didnt register jettison so the wrapper is not handled by default json
mapper which would expects {"test":"test"}

Another solution is to rewrite HelloWorldDTO to add a wrapper with a field
hellowWorldDto of type HelloWorldDTO


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://blog-rmannibucau.rhcloud.com> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
<https://javaeefactory-rmannibucau.rhcloud.com>

2016-11-03 17:32 GMT+01:00 Karl Kildén <ka...@gmail.com>:

> Hi!
>
> I am trying to consume a restful service with TomEE 7 and jax-rs Client. I
> copied the DTO between the projects. The other system uses a fairly old
> jersey impl and I can't change that for now.
>
> I have this DTO
>
> import javax.xml.bind.annotation.XmlRootElement;
>
>
> @XmlRootElement
> public class HelloWorldDTO {
>
> private String test = "test";
>
> public String getTest() {
> return test;
> }
>
> public void setTest(String test) {
> this.test = test;
> }
> }
>
> The service I am calling gives this response in the browser when I try the
> service that way:
>
> {"helloWorldDTO":{"test":"test"}}
>
> The way I doing the call is:
> client.target(builder).request(MediaType.APPLICATION_
> JSON).get(HelloWorldDTO.class)
>
> The URL is correct and response code is correct etc... I get the
> entity but the property test is null but it was sent as "test".
>
>
> Any tips on how to debug this? Should I try adding a wrapper on any
> side? :) I think I did try that but it did not help. In my real use
> case I need to send several and I have a wrapper with a List. When it
> came across as null I tried just with a simple property and still the
> problem persists.
>
> Thankful for advice!
>
>
> Cheers
>