チケット #35184

登録: 2015-05-23 06:01

最終更新: 2015-05-23 14:17

JSONHintアノテーションのignoreが効かない

報告者:(匿名)担当者:hizuno
優先度:5 - 中マイルストーン:(未割り当て)
チケットの種類:バグ重要度:5 - 中
コンポーネント:(未割り当て)状況:オープン [担当者決定済み]
解決法動いてるけど?

チケットの詳細

対象フィールドに対して、@JSONHint(ignore = true)をつけてもencodeした際にフィールドが出力されてしまう。 設定したモジュールのListオブジェクトをencodeすると中身が出てしまう。 そもそも、使用の仕方が悪いのであれば指摘のほどよろしくお願い致します。

実行例

List<Hoge> hogeList = new ArrayList<Hoge>();

Hoge1 hoge1 = new Hoge1(); hoge1.id = 1L; hoge1.name = "xxxxxx";

Hoge hoge = new Hoge(); hoge.id = 1L; hoge.hoge1 = hoge1;

hogeList.add(hoge);

JSON.encode(hogeList);

対象のクラス @Entity public class Hoge {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long id;
@JSONHint(ignore = true) @ManyToOne public Hoge1 hoge1;

}

@Entity public class Hoge1 {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long id;
public String name;

}


ライブラリーのバージョン version 1.3.6

添付ファイル

添付ファイルリスト添付ファイルはありません
新規添付ファイル追加
添付ファイルの追加添付ファイルの追加にはログインが必要です

チケットの履歴 - 3 件中 3 件表示

2015-05-23 06:01 更新者: None

  • 新しいチケット "JSONHintアノテーションのignoreが効かない" が作成されました

2015-05-23 14:17 更新者: hizuno

  • 解決法なし から 動いてるけど? に更新されました

コメント

こちらでも確認しましたが残念ながら再現できませんでした。もしかすると、@EntityなどJPAアノテーションを付けたクラスに setter/getter を自動的に生成するようなプロセッサを噛ましていませんでしょうか(lombokなど)。

現在の JSONIC は setter/getter メソッドとフィールドが両方ある場合、setter/getterメソッドが優先されるため、フィールド側のヒントが無視されます。次バージョンでは対応することも検討中ですが、現バージョンでは互換性の問題から対応方法を含め検討中です。

2015-05-24 07:12 更新者: None

コメント

publicフィールドのみになります。 Fwは、Play2のJavaを使用しています。 色々と試行錯誤して試してみたのですが、挙動が変わらなかったので、チケットとして切らせて頂きました。

hizuno への返信

こちらでも確認しましたが残念ながら再現できませんでした。もしかすると、@EntityなどJPAアノテーションを付けたクラスに setter/getter を自動的に生成するようなプロセッサを噛ましていませんでしょうか(lombokなど)。 現在の JSONIC は setter/getter メソッドとフィールドが両方ある場合、setter/getterメソッドが優先されるため、フィールド側のヒントが無視されます。次バージョンでは対応することも検討中ですが、現バージョンでは互換性の問題から対応方法を含め検討中です。


追記/更新 #35184 (JSONHintアノテーションのignoreが効かない)

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする