關於@JsonIgnore @JsonIgnoreProperties這兩個注解,是用在JSON循環引用的情況上,那么現在關於這兩個注解,還可以使用在另外一種情況上
即:
一般標記在屬性或者方法上,返回的json數據即不包含該屬性
關於這種情況在什么時候會遇到呢?
例如:
User實體中會有字段password字段,當返回用戶信息給前台的時候,當然是不希望將password值也一並返回,
所以,可以在password屬性上加上注解JsonIgnore
或者,可以在User類上加上注解@JsonIgnoreProperties(value = "{password}")
Test 代碼:
@Slf4j public class JsonDiffUtilsTest { /** * 使用@JSONField 進行字段名修改, 並指定序列化順序 或這忽略某個字段 @JSONField(serialize = false)
*/ 測試Bean // public class PartItem { // @JSONField(ordinal=1,name="ITEM_NO") // private String partNo; // @JSONField(ordinal=2,name="PCS") // private Number pcs; // @JSONField(ordinal=3,name="ORG") // private String org; // @JSONField(ordinal=4,name="PALLET") // private Number pallet; // @JSONField(ordinal=5,name="VOLUMNE") // private String volume; // @JSONField(ordinal=6,name="GW") // private Number gw; // } /** * <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> <fastjson.version>1.2.24</fastjson.version> * @throws Exception */ @Test public void testToJsonAndFormart() throws Exception { PartItem partItem = new PartItem(); partItem.setGw(1); partItem.setOrg("sea"); partItem.setPartNo("01"); partItem.setVolume("2l"); //tojson 並且格式化(標准json) 排序(按照字段中的順序) String jsonString = JSON.toJSONString(partItem, SerializerFeature.PrettyFormat,SerializerFeature.SortField); // String jsonString = JSON.toJSONString(partItem, SerializerFeature.PrettyFormat); //格式化,並且打印空值 // String jsonString = JSON.toJSONString(partItem,SerializerFeature.PrettyFormat,SerializerFeature.WriteMapNullValue); System.err.println(jsonString); /*{ "ITEM_NO":"12321", "ORG":"sa", "VOLUMNE":"2l", "GW":1 }*/ }}
格式化日期date類型,默認會格式為long
@Test private static void testConvertDateToJson() { Date date = new Date(); // String dt = JSONObject.toJSONString(date, SerializerFeature.WriteDateUseDateFormat);//"2019-07-31 11:20:32" String dt = JSONObject.toJSONString(date); System.err.println(dt); }
json 讀取,可以實現json轉bean , --反射通過fieldName 賦值即可
@Test public void jsonDiffhah() throws Exception{ log.debug("aaa"); String json = "{\"username\":\"zhangsan\",\"性別\":\"男\",\"company\":{\"companyName\":\"中華\",\"address\":\"北京\"},\"cars\":[\"奔馳\",\"寶馬\"]}"; ObjectMapper mapper = new ObjectMapper(); //JSON ----> JsonNode JsonNode rootNode = mapper.readTree(json); Iterator<String> keys = rootNode.fieldNames(); while(keys.hasNext()){ String fieldName = keys.next(); System.out.println(fieldName + ": " + rootNode.path(fieldName).toString()); } //JsonNode ----> JSON System.out.println(mapper.writeValueAsString(rootNode)); }