/ / JAXB to JSON(およびその逆)は、Jerseyを使用してどのように機能しますか? -json、rest、jaxb、jersey

JAXBからJSON(そしてその逆)はJerseyを使ってどのように動作しますか? - json、rest、jaxb、jersey

安らかなサービスを実装しましたそれは自分のクライアントで動作します。ここで、他のクライアントも操作できるサービスにしたいと思います。このようにして、次の質問に答えます:(私のコードのスナップショットは私の質問の後に来ます。システムは私のコードで正常に動作します)

1-データはどのように送信されますかサーバーとクライアントは次のように見えますか?他のJAXBアノテーション(@XMLElementなど)を使用していないことを考慮してください。生成されたJSONを確認する方法はありますか?

2- JAXBは、「Java Architecture forXMLバインディング」、つまり、データをXMLまたはJSONとして送信していますか(要求タイプをjsonに指定していると考えて)?または、オブジェクトをXMLに変換してからクライアントでJSONに変換しますか?サーバー、JSONを取得し、XMLに変換してからJavaオブジェクトに変換しますか?

3-クライアントでJAXBを使用していますが、サーバーはJSONリクエストを取得することになっています。 「キー」と「値」のペアを持つjsonを生成する他のクライアントがサーバーと対話できることを意味しますか?または、すべてのクライアントにJAXBの使用を強制していますか(サーバーのメソッドに特定のオブジェクトJAXBBeanの入力引数があると考えています)?残念ながら、現在JAXBを使用せずにJavaでjsonを作成および送信する方法がわかりません。したがって、質問する前にこの質問をテストすることはできませんでした。後で学習します。

私のコードの一部:

私はジャージーを使って安らかなサービスを実装しました。クライアント側では、JAXBオブジェクトのリストを含む投稿メッセージをサーバーに送信します。各JAXBオブジェクトは、次のように注釈が付けられたBeanのインスタンスです。

@XmlRootElement
public class JAXBBean {

String key;
String val;

//setters and getters (with no annotation) come here
...
}

そして、以下を使用してリストをサーバーに送信します。

String response = (String) publishWR.type("application/json").post(String.class, new GenericEntity<List<JAXBBean>> (reqArr){});
// publishWR is of type: com.sun.jersey.api.client.WebResource
// reArr is of type: List<JAXBBean>

サーバー側には、次のように書かれたこのWebリソースへのリクエストの投稿に応答するメソッドがあります。

@POST
@Consumes("application/json")
public String postAnnotation(List<JAXBBean> requestArr){
String anno = "";
String user = "";
...

for(int i = 0 ; i < requestArr.size() ; i++ ){
if( requestArr.get(i).getKey().equals("annotation") )
anno = requestArr.get(i).getVal();
else if( requestArr.get(i).getKey().equals("username") )
user = requestArr.get(i).getVal();
...
}
...
}

ありがとうございました!

回答:

回答№1は0

1-ブラウザでJSON応答をダウンロードし、簡単なテキストエディターで調べることができます(JSONの検証とフォーマット)。
2-いいえ、Jersey JSONプロバイダーは ジャクソン JSONでオブジェクトを直接シリアライズ/デシリアライズし、Javaオブジェクトに戻します。
3-はい、すべてのクライアントがJSONレスポンスを読み取ることができます。


回答№2の場合は0

Jerseyは、このためにJettisonライブラリを活用しています。 Jettisonは、JAXB実装によって処理されるJSONをStAXとの間で変換します。