私が作業しているプロジェクトにSimpleXmlライブラリを統合しようとしています。いくつかのフィールドをオプションにしてモデルをXMLにシリアライズする方法はありますか?ドキュメントからそれを理解できませんでした。オプションのフィールドを持つAndroid SimpleXmlシリアル化
答えて
あなたが定義した型のオブジェクト表現を使用する必要があります。
ダブル - >ダブル int型 - >整数
これはあなたがそうのようなヌルとしてそれらを定義することができます:
@Root(name = "someWS")
public class GetSmth{
@Element(name="Latitude", required=false)
private Double latitude;
@Element(name="Longtitude", required=false)
private Double longtitude;
@Element(name="PageNumber", required=false)
private Integer pageNumber;
@Element(name="PageSize", required=false)
private Integer pageSize;
@Element(name="CompanyDetailId")
private Integer companyDetailId;
public GetSmth(Double latitude, Double longtitude, Integer pageNumber,
Integer pageSize, Integer companyDetailId) {
this.latitude = latitude;
this.longtitude = longtitude;
this.pageNumber = pageNumber;
this.pageSize = pageSize;
this.companyDetailId = companyDetailId;
}
}
documentationを確認すると、オブジェクトのシリアライゼーションでは必須= falseがオブジェクトのシリアライズよりも多くなります。したがって、そこにプリミティブ型を使用できますが、その場合は代入中にnull以外の値を使用する必要があります。デシリアライゼーション時に、xmlが緯度を定義していない場合、緯度はnullの代わりにデフォルトの初期値0が与えられます。ちょうどあなたが望む行動に依存します。
編集:
は、オブジェクトの表現でコンストラクタを定義してください:
public GetSmth(Double latitude, Double longtitude, Integer pageNumber,
Integer pageSize, Integer companyDetailId)
は、私は(唯一の必須フィールドを取るか、1)空のデフォルトコンストラクタを持っていることを好む、とオプションのプロパティの設定を追加します。変更可能性が懸念される場合は、Builder
パターンを使用して、目的のフィールドのみを含むオブジェクトを作成します。
"partial"オブジェクト(メンバーの一部のみが設定されているオブジェクト)では、Simpleフレームワークは指定されたフィールドのみをXMLにシリアル化します。
そのテクニックの2分の1。プリミティブ型が指定されていない場合は、実際にはそれをシリアル化しませんか? –
ああ、私はここでは原始的なタイプについて具体的に話していることを知らなかった。私はこれを試していないが、プリミティブはデフォルト値を持つので、まだシリアル化されていると思うだろう。 – curioustechizen
- 1. XMLシリアル化のみ1つのフィールドをシリアル化
- 2. 未知のフィールドを持つJSONオブジェクトを逆シリアル化する
- 3. 未知のフィールドを持つJSONを逆シリアル化する
- 4. 一時的なフィールドを持つJavaのシリアル化
- 5. Android HashMapシリアル化/逆シリアル化
- 6. BlazeDSチャンネルのシリアル化オプション?
- 7. リレーションを持つエンティティのJMSSerializerBundleシリアル化グループ
- 8. タグ内のプロパティを持つXMLシリアル化
- 9. 属性を持つリストのXMLシリアル化
- 10. Avro:デシリアライズjson - オプションのフィールドを持つスキーマ
- 11. JSONとフィールドの依存関係を持つJSONを逆シリアル化する
- 12. 未知のフィールドを持つXMLの逆シリアル化 - 何が起こりますか?
- 13. jQueryフォームプラグイン:フィールド値のシリアル化
- 14. Androidでのシリアル化
- 15. AndroidのJSON - シリアル化
- 16. Java SimpleXMLでネストされたオブジェクトを逆シリアル化する方法
- 17. Auth0 java-jwtシリアル化:フィールド名
- 18. Gsonはフィールド名で変数を持つが、別の名前の変数にフィールドを逆シリアル化する
- 19. 2つのオプションのみを持つフィールドのMySQLデータ型
- 20. androidでのGsonのシリアル化
- 21. JAVA JACKSON:すべてのクラスの代わりに2つのフィールドを持つクラスをシリアル化する
- 22. Protobufバイナリ<-> JSONシリアル化オプション/代替?
- 23. Javaのシリアル化。フィールドの変更値
- 24. ProtoBufフィールドのSpark、Kryoシリアル化の問題
- 25. Django、TinyMCEフィールドのシリアル化の矛盾
- 26. シリアル化時のフィールドの順序
- 27. シリアル化できなかったフィールドのリストを報告するジャクソンのシリアル化
- 28. その属性を持つ要素の値をシリアル化
- 29. プロパティの複数の型を持つJSONの逆シリアル化
- 30. SimpleXMLが属性を逆シリアル化しないのはなぜですか?
質問をNPEを生成するコードで更新すると、より良い回答が得られます。 –
あなたが更新したのを見ました。コンストラクタがメソッド宣言のプリミティブ型を必要とする場合、nullを指定するとNPEがスローされます。 –