Json与Java对象相互转化

出现问题的原因:在做项目中,我们使用Hutool工具的Http请求调用远程服务器的接口,返回Json字符串,现在要把Json字符串转化为对象进行存储,传给前端vue。

访问远程返回的数据如下:

{
    
    
    "ret":0,
    "msg":"ok",
    "data":{
    
    
        "id":76,
        "isDefault":1,
        "resolution":2,
        "layoutType":2,
        "layoutMode":10,
        "frameRate":30,
        "bitRate":1,
        "videoHeight":180,
        "videoWidth":190,
        "domainId":"1045",
        "cloudId":4,
        "productType":0,
        "recordName":"默认配置",
        "watermarks":[
            {
    
    
                "id":22,
                "watermarkX":20,
                "watermarkY":80,
                "watermarkType":"img",
                "watermarkValue":"http://172.17.0.2:10042/protected_files/2e056002-7c9b-497c-a17b-1664edbf?attname=logo1.png",
                "watermarkSetting":"{"startTime":0,"endTime":0}"
            },
            {
    
    
                "id":23,
                "watermarkX":10,
                "watermarkY":10,
                "watermarkType":"text",
                "watermarkValue":"星海少年",
                "watermarkSetting":"{"fontSize":13,"fontFile":"MicrosoftYaHei.ttf","fontColorRgb":"#F7B0B","backColorRgb":"#FFFFF","blod":false,"italic":false,"underline":false}"
            },
            {
    
    
                "id":24,
                "watermarkX":500,
                "watermarkY":10,
                "watermarkType":"time",
                "watermarkValue":"yyyy-MM-dd hh:mm:ss",
                "watermarkSetting":"{"fontSize":13,"fontFile":"MicrosoftYaHei.ttf","tsColorType":0,"borderWidth":2,"isMs":true}"
            }
        ]
    }
}

问题:将Json字符串转为为Java对象

解决方法:使用阿里的fastjson

引入fastjson依赖

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.73</version>
</dependency>

Controller 中代码

@GetMapping("/default/{appid}")
    public Result recordDefault(@PathVariable("appid") String appid) {
    
    
        String syskey= "VIDEO_CAL_SVICE_AKEY";
        String appKey = vbsSysSystemconfigService.selectSysKeyBySysvalue(appid,syskey);
        String result = HttpRequest.get(url地址?appKey="+ appKey)
                .header(Header.USER_AGENT, "Hutool http")
                .timeout(20000)
                .execute().body();
        // 将Json字符串转为Json
        JSONObject jsonObject1 = JSONObject.parseObject(result);
        // 得到data中的数据
        String data = jsonObject1.getString("data");
        // 将数据放入到SysWatermark对象中
        SysWatermark sysWatermark = JSONObject.parseObject(data, SysWatermark.class);
        return Result.success(sysWatermark);
    }

注意:代码中的SysWatermark对象中的属性 与返回的Json字符串是一一对应的


如果有收获!!! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客

猜你喜欢

转载自blog.csdn.net/weixin_45606067/article/details/115023939