JSON
1、序列化时过滤字段(属性)
@JSONField(serialize = false)
private String name;
@JSONField(name = "AGE")
private transient String age;
在实体字段前面,使用transient关键字,表示该字段不参与序列化,转JSON字符串时就可以忽略掉该字段。因为是JAVA关键字所以也会影响该字段其他序列化操作。
SimplePropertyPreFilter filter = new SimplePropertyPreFilter();
filter.getExcludes().add("PHONE");
System.out.println(JSONObject.toJSONString(u, filter));
FastJson的属性名过滤器
2、序列化时过滤字段(属性)
@JSONField(serialize = false)
private String name;
3、
System.out.println("RefundCollection 的 json: " + JSON.toJSONString(logisticsAddress.getLogisticsAddressDTOList(), SerializerFeature.WriteMapNullValue));
4、
// 序列化配置对象
SerializeConfig config = new SerializeConfig();
/**
* CamelCase 策略,Java对象属性:personId,序列化后属性:persionId
* PascalCase 策略,Java对象属性:personId,序列化后属性:PersonId
* SnakeCase 策略,Java对象属性:personId,序列化后属性:person_id
* KebabCase 策略,Java对象属性:personId,序列化后属性:person-id
*/
config.propertyNamingStrategy = PropertyNamingStrategy.CamelCase;;
// 序列化对象
String json = JSON.toJSONString(object,config);
System.out.println("反序列 person json -> ");
@SerializedName("app_key")
private String appKey = null;
List<String> name = new Gson().fromJson(json, new TypeToken<List<String>>() {}.getType());
Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
DouDianResponseDTO<NewCreateOrderResponseDTO> dtoDouDianResponseDTO = gson.fromJson(returns.getBody(), new TypeToken<DouDianResponseDTO<NewCreateOrderResponseDTO>>() {
}.getType());
Json的序列化与反序列化,分别对应不同的名称,那么只需要设置@SerializedName(value="序列化、反序列化默认名称",alternate={"反序列化名称备选"})