java - Java 中的 JSON JAX-RS

标签 java json jersey jax-rs httpful

我将 Jersey 用于 Java 中的 RESTful Web 服务。我正在从 PHP 客户端使用它们。我让它与 JSON 一起正常工作,如下所示:

PHP:(使用 httpful phar)

 $uri="http://localhost:8080/YYYYY/rest/common/json";
    $r = \Httpful\Request::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 绑定(bind)类:

@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();
}

关于java - Java 中的 JSON JAX-RS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992172/

相关文章:

java - JLayeredPane 和 MouseAdapter 问题

android - Android webview 中如何将 JSON 传递给 AngularJS?

javascript - jQuery post 返回多维数组

java - Google Guice 和 JPA 注入(inject) - 奇怪的错误

html - HTML 表单的模式不能为 REST 生成 DELETE

java - 如何解决java中的错误:A node is used in a different document than the one that created it.

java 类对象和类型

jquery - 如何使用 jQuery 或 JavaScript 在 JSON 中添加新对象?

java - 在 Jersey 中,我可以将 QueryParams 和 FormParams 组合成一个方法的值吗?

java - 迁移到 java 11 时注释不起作用