問題タブ [jettison]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Jettison / マーシャリング時に整数として返される文字列
2008 年のJIRA エントリで概説された Jettison の「機能」があり、次の問題に言及しています。
「要素」の値を「00102」にするとします。出力は次のようになります。
しかし今、「要素」を「102」に設定しました。
Jettison が助けになろうとしていることは理解していますが、真剣に、私に代わってこの種のことを決定する必要はありません。いいえ、結構です。
現在の回避策
現時点では、ここにあるユーザーによって概説されているソリューションを使用しました。このユーザーは、Bean 構成に次を追加します。
これは、明らかに整数であっても、すべての要素が強制的に文字列であると言うほど、問題を部分的に解決します。これで、少なくとも、データが保持する構造が正確にわかり、要素の型が文字列から整数に変更されたり、知らないうちに元に戻ったりすることはありません。
問題
ただし、別の要素を整数として出力したい場合でも、現在は出力できません。要素ごとにではなく、要素の出力をサービス全体に強制することしかできないようです。
「Jackson を使用する」という提案 (フレームワークが Jettison を明示的に使用しているため、従うことはできません) 以外に、JSON 出力で文字列として強制したい要素を指定する方法はありますか?
java - json をテキスト ファイルに書き込む、jettison
JSONObject features = new JSONObject();
txt ファイルに保存する JSONOBject を作成しました。JSONファイルの処理にJettison LIBraryを使用しています。ただし、jsonをファイルに書き込む方法が見つかりませんでした。何か案が?
json - CXFでJAX-RS Restful WebサービスのPOSTボディでJSONメッセージを受信する方法は?
JAX-RS の上に Apache-CXF を使用して REST サービスを開発しようとしています。手始めに、 とtest
を受け取る というメソッドがString message
ありint value
ます。クライアントがこれらのパラメーターを POST メッセージ本文で渡すことができるようにしたいと考えています。私はこれを達成できないようです。
ここにコードを貼り付ける前に、詳細をいくつか示します。
- SpringなしでCXFを使用しています
- これは Web アプリではないため、web.xml を含む WEB-INF フォルダーがありません。
- SoapUI と Postman (Google Chrome アプリケーション) を使用してサービスをテストします
次のコードを使用すると、次のようになりますWARNING: javax.ws.rs.BadRequestException: HTTP 400 Bad Request
。
DemoService.java
DemoServiceImpl.java
DemoServer.java
私のPOM.xml(ルートタグの属性を除いて、すべてそこにあります)
{"message":"hello there!", "value":"50"}
URLをテストするとhttp://localhost:9090/demoService/test
、HTTP 400 Bad Reuest が返されました。
次に、SO: How to access parameters in a RESTful POST methodでこの質問を見て、これを試しました:
DemoServer.java に次のネストされたクラスを追加しました。
また、このクラスをメソッドのパラメーターとして使用するように DemoService インターフェイスと実装を変更しましたtest
が、これは最終的にはやりたいことではありません。(ここで実装を示すだけで、質問はすでに長くなっています):
そして、私が得たこのエラーを修正するために:SEVERE: No message body reader has been found for class DemoService$TestRequest, ContentType: application/json
(Postmanでエラー415が表示されます-サポートされていないメディアタイプが表示されます)次の依存関係(jettisonおよびその他のもの)をPOM.xmlに追加しました:
HTTP POST リクエストで、次の JSON メッセージを使用してサービスをテストしました。
{"testRequest":{"message":"hello there!", "value":"50"}}
これは機能します。TestRequest クラスを使用してパラメーターをカプセル化するこのソリューションは機能しますが、それは私が探しているソリューションではありません。この TestRequest クラスを (明示的に) 導入しなくても、JSON メッセージで 2 つのパラメーターを渡すことができるようにしたいと考えています。
質問:
- これはJerseyを使用して実装する方が簡単でしょうか?
- web.xml フォルダも WEB-INF フォルダもないので、cxf.xml ファイルで CXF を構成できませんか? オンラインのチュートリアルの多くは XML 構成をあまり使用していないようですが、それを行うためだけに TomEE や Spring、Glassfish などのフレームワークをデプロイしたくありません。
- ソリューションをオンラインで検索したところ、Spring Bootに出会いました。おそらくそれを使用することをお勧めしますか?これにより、このような Web サービスの開発が容易になりますか?
- また、値を JSON 形式で返すようにするにはどうすればよいですか (または、文字列の場合はそうすべきではありませんか?)
java - Jersey 2 に移行しました。現在、クライアントで valueType を相互運用する必要があります
Jersey 2.0 に移行した後、REST サービスはこのブール値フラグを少し異なる方法で提供しているようです。(役立つ場合はサービスコードも提供できますが、これはかなり標準的なようで、クライアントで異なる操作が必要なだけです)
これは、JSON のビルド方法が移行に伴って変更されたためだと思いますが、以前は次のような Java コードを使用してこの問題を相互運用していました。
明らかに、相互運用する valueType があるため、これはもう機能しません。この true/false フラグを簡単に取得する方法はありますか? 私はそこを探してみましたが、あまり運がありません。
編集- サービスコードも追加します。コメントでこれについて言及しましたが、javax の JsonObject の代わりに JSONObject を使用しようとしたときにシリアライゼーションの問題が発生していたため、移行でその側面が変更されました。
json - Jettison を使用するように Wildfly 8.1 を構成する
私の Wildfly 8.1 インストールでは、クラスを JSON にマーシャリングするために Jackson (Jackson 2 ではなく) を使用しているという興味深い問題があります。クラスで使用している JAXB アノテーションを利用するために、Jettison を使用したいと考えています。
サーバーが Jackson の代わりに Jettison を使用するように強制するために、次の手順を実行しました。
POM.xml の依存関係を変更して、resteasy-jettison-providerモジュールに依存するように、スコープを提供どおりに設定しました
< 依存関係 >
< groupId >org.jboss.resteasy</ groupId >
< artifactId >resteasy-jettison-provider</ artifactId > < バージョン >3.0.8.Final</ バージョン >
< スコープ >提供</ スコープ >
</ 依存関係>WEB-INF ディレクトリのjboss-deployment-structure.xmlを変更して、jettison モジュールを含め、すべての jackson モジュールを除外しました。
< jboss-deployment-structure >
< deployment >
< 除外 >
< module name="org.jboss.resteasy.resteasy-jackson-provider" />
< module name="com.fasterxml.jackson.core.jackson-core" / >
< モジュール名="com.fasterxml.jackson.core.jackson-annotations" />
< モジュール名="com.fasterxml.jackson.core.jackson-databind" />
< モジュール名="com.fasterxml.jackson. jaxrs.jackson-jaxrs-json-provider" />
< モジュール名="org.jboss.resteasy.resteasy-jackson2-provider" />
</ 除外 >
< 依存関係 >
< モジュール名="org.jboss.resteasy.resteasy-jettison-provider" />
</ 依存関係 >
</ 展開 >
</ jboss-展開構造 >
サーバーを起動したら、簡単な JSON を送信してアプリケーションにログインします。
ただし、このコード スニペットを送信すると、サーバーから次の例外が発生します。
その例外から、私の設定にもかかわらず、ジャクソンがまだ使用されているようです。
私が間違っていることや、どのような設定ミスがあるかを誰かが指摘できますか?
java - XStream / Jettison でマルチマップをデシリアライズできませんでした
XStream と Jettison を使用してグアバのマルチマップをシリアライズおよびデシリアライズしようとしています。説明する簡単なテストを次に示します。
次のエラーが発生します。
このエラーは、enum キーを使用した場合に特に Multimap に焦点を当てていることに注意してください。multimap の代わりに Map を使用すると、エラーは発生しません。Enum の代わりに String をキーとして使用すると、エラーは発生しません。また、JSON の代わりに XML にシリアル化すると (つまり、コンストラクターで「JettisonMappedXmlDriver」を使用しない場合)、完全に機能します。
これに対する良い解決策はありますか?現在、マルチマップをコレクションのマップに置き換えるという回避策を使用していますが、マルチマップを維持する方法を見つけたいと考えています。
jersey - ジャージー JSONConfiguration.natural().build() に Jackson または Jettison を使用する
Weblogic と Jboss の残りのアプリケーションを移植しようとしています。現在、休憩アプリにジャージを使用しています。移植可能な実装では、jboss は resteasy を使用します。
コンテキスト: 私たちのアプリでは、return with@Provider
を使用するクラスです。だから私はJacksonまたはJettisonの上記の構成で内部的に使用されているジャージを見つけようとしています. これについて私を助けてください。ContextResolver<JAXBContext>
JSONJAXBContext
JSONConfiguration.natural().build()