json和java對象相互轉換


springboot中json轉換默認使用的是jackson包,通過spring-boot-starter-web依賴的

 

1 在屬性上添加注解@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")

  可以修改對象轉成json后的時間格式

2 在屬性上添加注解 @JsonInclude(JsonInclude.Include.NON_NULL)

  如果該屬性為null,則不序列化

       Include.Include.ALWAYS 默認 
       Include.NON_DEFAULT 屬性為默認值不序列化 
       Include.NON_EMPTY 屬性為 空("") 或者為 NULL 都不序列化 
       Include.NON_NULL 屬性為NULL 不序列化

3  在屬性上添加注解 @JsonProperty("userName")

  這里的別名'userName' ,可以有兩個作用

     一,當對象轉為json時,該屬性的key就是別名。

     二,當json轉為對象時,像這種格式{"id":100,"phone":"15211115013","name.wx":"zs"}  , "name,wx" 就要為屬性設置別名,否則轉換會出錯

 4 在屬性上添加注解@JsonIgnore 會忽略該屬性,不會向前台返回該屬性

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.springframework.lang.Nullable;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonUtils {
 
    public static final ObjectMapper mapper = new ObjectMapper();

    /**
     * 對象轉換為json字符串
     * @param obj
     * @return
     */
    @Nullable
    public static String toString(Object obj) {
        if (obj == null) {
            return null;
        }
        if (obj.getClass() == String.class) {
            return (String) obj;
        }
        try {
            return mapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            return null;
        }
    }
 
    @Nullable
    public static <T> T toBean(String json, Class<T> tClass) {
        try {
            return mapper.readValue(json, tClass);
        } catch (IOException e) {
            return null;
        }
    }
 
    @Nullable
    public static <E> List<E> toList(String json, Class<E> eClass) {
        try {
            return mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, eClass));
        } catch (IOException e) {
            
            return null;
        }
    }
 
    @Nullable
    public static <K, V> Map<K, V> toMap(String json, Class<K> kClass, Class<V> vClass) {
        try {
            return mapper.readValue(json, mapper.getTypeFactory().constructMapType(Map.class, kClass, vClass));
        } catch (IOException e) {
            return null;
        }
    }
 
    @Nullable
    public static <T> T nativeRead(String json, TypeReference<T> type) {
        try {
            return mapper.readValue(json, type);
        } catch (IOException e) {
            return null;
        }
    }

   class User{
        private String name;
        private Integer age;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        public User() {
            super();
        }
    }
   
    public static void main(String[] args) {
        String json="{\"namge\":\"zhuxinjun\",\"age\":\"21\"}";
        Map<String, String> map = toMap(json, String.class, String.class);
        System.out.println("map:"+map);
        
        String j="[{\"namge\":\"zhuxinjun\",\"age\":\"21\"},{\"namge\":\"yangyang\",\"age\":\"32\"}]";
        List<Map<String, String>> maps = nativeRead(j, new TypeReference<List<Map<String, String>>>() {
        });
        for(Map<String,String> map1:maps){
            System.out.println("map1"+map1);
        }
    }

}

 

 轉載自: https://blog.csdn.net/u013089490/article/details/83585794

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM