JSOnArrayフィルタリング


説明
リストResponseBodyをフロントエンドページにエラーを報告
の原因となる
TProjectXXXエンティティにOneToManyの属性が存在する
解決策SimplePropertyPreFilterフィルタを使用して、必要なフィールドだけを残します.
/**
 *    :           ,     json       。
 */
 @JSONField(serialize=false)  
 private String name;  


/**
 *    :          transient,          ,    json            。
 */
  private transient  String name;  
 

/**
 *    :  fastjson    
 */
 PropertyFilter profilter = new PropertyFilter(){  
	   @Override  
	    public boolean apply(Object object, String name, Object value) {  
	        if(name.equalsIgnoreCase("last")){  
	            //false  last          
	            return false;  
	        }  
	        return true;  
	    }  
};  
json = JSON.toJSONString(user, profilter);  
System.out.println(json);   

/**
 *    ,      
 */
 SimplePropertyPreFilter filter = new SimplePropertyPreFilter(TTown.class, "id","townname");  
 response.getWriter().write(JSONObject.toJSONString(townList,filter));   

アタッチメント
  • @Transient

  • @Transientは、この属性がデータベース・テーブルへのフィールドのマッピングではないことを示し、ORMフレームワークはこの属性を無視します.属性がデータベース・テーブルのフィールド・マッピングでない場合は、必ず@Transientと表示してください.そうしないと、ORMフレームワークのデフォルトの注釈は@Basicです.
    //このフィールドがデータベース表にないことを示す
    @Transient public int getAge() {  return 1+1; }
    Jackson関連:
  • @JsonIgnoreProperties

  • この注釈はクラス注釈で、jsonシーケンス化時にjava beanのいくつかの属性を無視し、シーケンス化と逆シーケンス化が影響を受けます.
  • @JsonIgnore

  • この注記は、上記の@JsonIgnorePropertiesと同様に機能する属性またはメソッド(属性上が望ましい)に使用されます.
  • @JsonFormat

  • この注記は、@JsonFormat(pattern="yyyy-MM-dd HH-mm-ss")など、Dateタイプを直接目的のモードに変換するのに便利です.
  • @JsonSerialize

  • この注記は、プロパティまたはgetterメソッドに使用され、doubleをシーケンス化するときに2桁の小数点を制限するなど、シーケンス化時にカスタムコードを埋め込むために使用されます.
  • @JsonDeserialize

  • この注記は、上記の@JsonSerializeと同様に、逆シーケンス化時にカスタムコードを埋め込むための属性またはsetterメソッドに使用されます.