3

JavaのRESTfulWebサービスにJerseyを使用しています。私は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バインディングクラス:

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

今私がしたいのは、次のJSON構造を送信することです。

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

ご覧のとおり、Javaのプリミティブ型とは別に、オブジェクト内にオブジェクトを送信したいと思います。Java側からこれを行うにはどうすればよいですか?ありがとうございました!

4

1 に答える 1

3

送信するデータを表すオブジェクトを定義します。オブジェクトを任意に深くすることができます (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();
}
于 2013-02-20T23:58:27.603 に答える