我使用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();
}