JSON JAX-RS in Java



我使用Jersey作为Java中的RESTful web服务。我正在从PHP客户端消费它们。我可以很好地使用JSON,如下所示:

PHP:(使用httpful phar)

 $uri="http://localhost:8080/YYYYY/rest/common/json";
    $r = HttpfulRequest::post($uri)
    ->body({"name":"MyName"})->send();
    return $r;

Java RESTful WS:

@POST
@Path(value="json")
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_JSON)
public String jsonTest(final JaxData data)
{
    System.out.println(data.toString());
    return "this is the name: "+data.name;
}

Java绑定类:

@XmlRootElement
public class JaxData {
    @XmlElement public String name; 
}

现在我想做的是发送以下JSON结构:

{
"title":"MyTitle",
"names":[
    {
        "name":"nameOne"
    },
    {
        "name":"nameTwo"
    }
],
"city":"MyCity",
"country": "MyCountry"
    }

正如您所看到的,我希望在Java的基本类型之外的对象内部发送对象。如何从Java端执行此操作?非常感谢。

定义一个表示要发送的数据的对象。您可以将对象设置为任意深度(JSON中的每个级别都可以映射到一个子对象)。

下面是一个让你开始的例子:

public class MyBean implements Serializable {
    private String title;
    private List<JaxData> names;
    private String city;
    private String country;
    // Constructors, getters/setters
}
@POST
@Path(value="json")
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_JSON)
public String jsonTest(final MyBean data) {
    return data.toString();
}

相关内容

  • 没有找到相关文章