出现问题的原因:在做项目中,我们使用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字符串是一一对应的
。
如果有收获!!! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客