一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - jackson 如何將實體轉json json字符串轉實體

jackson 如何將實體轉json json字符串轉實體

2022-02-23 00:30介寒食 Java教程

這篇文章主要介紹了jackson 實現將實體轉json json字符串轉實體,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

 

將實體轉json json字符串轉實體

@Autowired
ObjectMapper objectMapper;

 

實體轉json

  String data = "";  //一個json串
  Student stu = new Student ();
 stu = objectMapper.readValue(data, Student .class);// json字符串轉實體
public <T> String writeAsString(T t) throws JsonProcessingException {
    return objectMapper.writeValueAsString(t);
} 
String aa = writeAsString(stu);

 

json轉實體

    public <T> T readValue(String data) {
        try {
            return objectMapper.readValue(data, new TypeReference<T>() {
            });
        } catch (Exception e) {
            // TODO: handle exception
        }
        return null;
    }

 

使用Jackson操作json數據,各場景實例

該篇內容,結合實例介紹使用jackson來操作json數據:

在pom.xml文件中添加 ,Jackson 依賴:

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.1</version>
        </dependency>
 
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.11.1</version>
        </dependency>

示例中使用到的實體類, UserEntity.java

/**
 * @Author : JCccc
 * @CreateTime : 2020/3/18
 * @Description :
 **/
public class UserEntity {
    private Integer id;
    private String name;
    private Integer age;
 
  // set get 方法 和 toString 等方法就不粘貼出來了
}

在介紹示例前,先看一張圖,使用jackson如:

jackson 如何將實體轉json json字符串轉實體

 

1. 對象(示例為 UserEntity)轉 json 數據

writeValueAsString 方法

    public static void main(String[] args) throws JsonProcessingException {
        UserEntity userEntity=new UserEntity();
        userEntity.setId(100);
        userEntity.setName("JCccc");
        userEntity.setAge(18);
        ObjectMapper mapper = new ObjectMapper();
        String jsonString = mapper.writerWithDefaultPrettyPrinter()
                .writeValueAsString(userEntity);
        System.out.println(jsonString);
    }

控制臺輸出:

jackson 如何將實體轉json json字符串轉實體

格式很漂亮,是因為使用了 :

jackson 如何將實體轉json json字符串轉實體

咱們不需要漂亮,所以后面的我都不使用格式的方法了,轉換的時候,只需要 writeValueAsString 就夠了 。

 

2. json 數據 轉 對象

readValue 方法

        ObjectMapper mapper = new ObjectMapper();
        //json字符串轉對象
        UserEntity userEntityNew = mapper.readValue(jsonString, UserEntity.class);
        System.out.println(userEntityNew);

控制臺輸出:

jackson 如何將實體轉json json字符串轉實體

 

3. map 轉 json 數據

        ObjectMapper mapper = new ObjectMapper();
        Map map=new HashMap();
        map.put("A",1);
        map.put("B",2);
        map.put("C",3);
        map.put("D",4);
        String jsonMap = mapper.writeValueAsString(map);
        System.out.println(jsonMap);

控制臺輸出:

jackson 如何將實體轉json json字符串轉實體

 

4. json 數據 轉 map

        ObjectMapper mapper = new ObjectMapper();
        //json字符串轉為Map對象
        Map mapNew=mapper.readValue(jsonMap, Map.class);
        System.out.println(mapNew);

控制臺輸出:

jackson 如何將實體轉json json字符串轉實體

 

5. List<UserEntity> 轉 json 數據

        ObjectMapper mapper = new ObjectMapper();
        UserEntity userEntity1=new UserEntity();
        userEntity1.setId(101);
        userEntity1.setName("JCccc1");
        userEntity1.setAge(18);
        UserEntity userEntity2=new UserEntity();
        userEntity2.setId(102);
        userEntity2.setName("JCccc2");
        userEntity2.setAge(18);
        UserEntity userEntity3=new UserEntity();
        userEntity3.setId(103);
        userEntity3.setName("JCccc3");
        userEntity3.setAge(18);
        List<UserEntity> userList=new ArrayList<>();
        userList.add(userEntity1);
        userList.add(userEntity2);
        userList.add(userEntity3);
        
        String jsonList = mapper.writeValueAsString(userList);
        System.out.println(jsonList);

控制臺輸出:

jackson 如何將實體轉json json字符串轉實體

 

6. json 數據 轉 List<UserEntity>

        ObjectMapper mapper = new ObjectMapper();
        List<UserEntity> userListNew= mapper.readValue(jsonList,new TypeReference<List<UserEntity>>(){});
        System.out.println(userListNew.toString());

控制臺輸出:

jackson 如何將實體轉json json字符串轉實體

 

7.接口接收稍微復雜一點的json數據,如何拆解

現在模擬了一串稍微復雜一些的json數據,如:

{
	"msg": "success",
	"data": [
		{
			"id": 101,
			"name": "JCccc1",
			"age": 18
		},
		{
			"id": 102,
			"name": "JCccc2",
			"age": 18
		},
		{
			"id": 103,
			"name": "JCccc3",
			"age": 18
		}
	],
	"status": 200
}

那么我們接口接收時,如果操作呢?

1.直接使用 @RequestBody Map map 接收,里面如果嵌套list,那就拿出對應的value轉list,然后該怎么拿怎么拿。

    @PostMapping("testJackson")
    public void testJackson(@RequestBody Map map) {
 
        System.out.println(map);
        String  msg = String.valueOf(map.get("msg"));
        System.out.println(msg);
        List dataList = (List) map.get("data");
        System.out.println(dataList.toString());
    }

2.使用字符串接收json數據 @RequestBody String jsonStr , 那么就使用jackson把這個json數據轉為Map,然后該怎么拿怎么拿。

    @PostMapping("testJackson")
    public void testJackson(@RequestBody String jsonStr) throws JsonProcessingException {
 
        System.out.println(jsonStr);
        ObjectMapper mapper = new ObjectMapper();
        Map map = mapper.readValue(jsonStr, Map.class);
        String  msg = String.valueOf(map.get("msg"));
        System.out.println(msg);
        String  status = String.valueOf(map.get("status"));
        System.out.println(status);
        List dataList = (List) map.get("data");
        System.out.println(dataList.toString());
    }

好的,該篇就到此。

ps: 為啥我要科普這個jackson的使用么?這個算是基本的操作了,原本我經手的很多項目都用到的fastjson ,其實使用起來也杠杠的。

除了jackson是springboot web包的內部解析框架外,其實還有一些原因。

懂的人自然會明白。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/jiehanshi/p/11331446.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 女海盗斯蒂内塔的复仇2免费观看 | 免费网址在线观看入口推荐 | 国产区香蕉精品系列在线观看不卡 | 太深了 太粗h1v1 | 国产自一区 | 性欧美video| 久久成人亚洲 | 欧洲一级| 国产按摩系列 | 娇妻被老外疯狂调教 | 掰开逼操 | fuqer老师| 精品欧美日韩一区二区三区 | 日韩在线观看免费 | zoofilivideo杂交3d | 欧美影院一区二区三区 | 国产午夜成人无码免费看 | 女学生被老师调教在教室 | 91桃色视频在线观看 | 久久sese | 亚洲视频在线观看免费 | 日本视频免费在线 | 免费视频一区 | 情侣宾馆愉拍自拍视频 | 古代翁熄乩伦小说h | tk白丝丨vk | 国产中文字幕 | 男人天堂网在线 | 欧美成人另类人妖 | 欧美国产精品 | 国产一区二区三区毛片 | ange venus与黑人 | 桃色综合网| 亚洲欧美韩国日产综合在线 | 国产成人小视频在线观看 | 国产欧美一区二区三区免费 | 亚洲va久久久久 | 午夜理论电影在线观看亚洲 | 火影忍者羞羞 | 精油按摩日本 | 成人另类视频 |