2012-11-27 4 views
15

初めてWebサービスを作成しています。 Jerseyに基づいてRESTful Webサービスを作成しました。そして私はJSONを生産したいと思います。私のウェブサービスの正しいJSONタイプを生成するために必要なことは何ですか?JSONをRESTfulなWebサービスで正しく生成する方法はありますか?

は、ここに私の方法の一つだ:

@GET 
@Path("/friends") 
@Produces("application/json") 
public String getFriends() { 
    return "{'friends': ['Michael', 'Tom', 'Daniel', 'John', 'Nick']}"; 
} 

それは私は単に私の方法のための注釈@Produces("application/json")を指摘することは十分ですか?次に、このメソッドは任意のタイプのオブジェクトを返すかもしれませんか?または単に文字列ですか?これらのオブジェクトの追加の処理や変換が必要ですか?

これらの問題に対処する初心者として私を助けてください。前もって感謝します!

答えて

25

jaxbアノテーションでBeanにアノテーションを付けることができます。

@XmlRootElement 
    public class MyJaxbBean { 
    public String name; 
    public int age; 

    public MyJaxbBean() {} // JAXB needs this 

    public MyJaxbBean(String name, int age) { 
     this.name = name; 
     this.age = age; 
    } 
    } 

、その後、あなたの方法は次のようになります。あなたはパッケージを使用することができ

https://jersey.java.net/documentation/latest/user-guide.html#json

+0

いいえparamのコンストラクタ部分を指摘してくれてありがとう。それは重要でした! – simplysiby

5

:このを扱う最新のマニュアルの章があり

@GET @Produces("application/json") 
    public MyJaxbBean getMyBean() { 
     return new MyJaxbBean("Agamemnon", 32); 
    } 

org.jsonのようなものhttp://www.json.org/java/

より頻繁にJSONObjectを使用する必要があるためです。そこ

あなたが簡単にJSONObjectsを作成し、その中にいくつかの値を置くことができます。

JSONObject json = new JSONObject(); 
JSONArray array=new JSONArray(); 
    array.put("1"); 
    array.put("2"); 
    json.put("friends", array); 

    System.out.println(json.toString(2)); 


    {"friends": [ 
     "1", 
     "2" 
    ]} 

編集これは、あなたが異なる層にあなたの応答を構築し、オブジェクト

0

としてそれらを返すことができるという利点がありこのアノテーションを使用

@RequestMapping(value = "/url", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE}) 
+0

これは春の注釈ではありませんか? これは正当だとは思わない。 – Entomo

+0

OPはかなり明確です:_ "** Jersey **に基づいてRESTful Webサービスを作成しました。" _ '@ GetMapping'アノテーションはJersey APIの一部ではありません。これはSpringのMVCアノテーションです。 –

2
@GET 
@Path("/friends") 
@Produces(MediaType.APPLICATION_JSON) 
public String getFriends() { 

    // here you can return any bean also it will automatically convert into json 
    return "{'friends': ['Michael', 'Tom', 'Daniel', 'John', 'Nick']}"; 
} 
+3

'@Produces(" application/json ")は' @Produces(MediaType.APPLICATION_JSON) 'とどう違うのですか? –

+1

それはまったく同じことです。 'MediaType.APPLICATION_JSON'は値が' application/json'に等しい定数です。定数を使用するとエラーが起こりにくく、より良い選択です – Adrien

1
@POST 
@Path ("Employee") 
@Consumes("application/json") 
@Produces("application/json") 
public JSONObject postEmployee(JSONObject jsonObject)throws Exception{ 
    return jsonObject; 
}  
関連する問題