私は唯一のオブジェクトのプロパティを読み取る必要があるとして、私は自分のアプリケーションではトーンアナライザAPI(IBM Bluemix)からのデータを操作するためにJSON文字列を既存のオブジェクトに逆シリアル化できますか?
をGSONライブラリを使用しています、私は静的メソッドを使用してToneAnalysis
オブジェクトを作成し、決して新しいインスタンスを作成します。だから私はこれを行う必要はありません:
ToneAnalysis ta = new ToneAnalysis();
方法私は、現時点で物事をやっていることです::
string json = "{\"document_tone\": { ... } }";
ToneAnalysis ta = ToneAnalysis.fromJsonString(json)
このアプローチは、私がプライベートPARAMETER-になってしまったたことを意味し空でないコンストラクタ:
public class ToneAnalysis {
private DocumentTone document_tone;
public DocumentTone getDocumentTone() {
return this.document_tone;
}
public static ToneAnalysis fromJsonString(String json) {
return new Gson().fromJson(json, ToneAnalysis.class);
}
private ToneAnalysis() {
}
}
fromJson
はリフレクションでオブジェクトを作成するためです。私はこれを行うことができません:
this = gson.fromJson(json, ToneAnalysis.class);
はJSONオブジェクトが既存のオブジェクトに直列化復元されるか、私は私のデザインを再考する必要があることを可能にする方法はありますか?
Javaのシリアライゼーションは、引数なしのコンストラクタを使用します。これを行う方法は他にもたくさんありますが、(Javaランタイムで定義されているように)シリアライゼーションではありません。 – Tibrogargan
シンプル:独自のカスタムJSONパーサーを作成するだけです。 –
JSONをJavaオブジェクトに逆シリアル化するのに役立つかもしれません。 – HARDI