所作此文,一来方便日后查询,二来纪念自己所做的第一个数据库管理项目(Real Time)。本文主要是介绍Json字符串和Json对象在项目中的转换,分为Gson版与fastjson版。
一.Gson版
Example 1:
String threadJson = RtAPISessionUtil.getHttpDataByGet(url); //通过url,接口返回关于线程的Json字符串
Map<String, String> threadJsonObj = new HashMap<String, String>(); //Map实例
threadJsonObj = gson.fromJson(threadJson, threadJsonObj.getClass()); //Json字符串转换为Map中的对象
String threadCounts = String.valueOf(threadJsonObj.get("threadCounts")); //通过key取值
Instructions:
RtAPISessionUtil.getHttpDataByGet(url); //调用http接口,处理url,服务器返回结果,平台写的接口。
Gson gson = new Gson(); // gson 对象,此处Gson依赖引入不赘述,知道用其中的方法即可。
gson.fromJson(threadJson, threadJsonObj.getClass()); // 调用fromJson()方法 进行解析
Map<key,value> 集合是通过key来取值的,转化之后便可以通过key来取到其对应的值。比如上面通过接口返回的Json字符串为:
{
"threadCounts":5 // 这里服务器返回的是整形数据,代码中进行了强转为String.
...
}
转换为Map对象之后:
{
threadCounts:5 //threadCounts 为key值
...
}
二.fastjson版
String data = RtAPISessionUtil.getHttpDataByGet(url); //data:处理返回据Json字符串
return JSONObject.parseObject(data,RtTimePointQuery.class); // 返回的是经过处理之后和JavaBean映射的
Instructions:
{
"err":1 // 不为0说明有错误信息
"err_msg":"invalid input" //错误信息
"time":"2018-01-01 21:51:30.786" //返回时间
}
public class RtTimePointQuery {
private String err;
private String err_msg;
private Date time;
public String getErr() {
return err;
}
public void setErr(String err) {
this.err = err;
}
public String getErr_msg() {
return err_msg;
}
public void setErr_msg(String err_msg) {
this.err_msg = err_msg;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
}
这样,便可以通过RtTimePointQuery的对象通过get方法来获取到数据。
return JSONObject.toJSON(map).toString(); //将Map对象转为Json字符串 map对象中有很多数据
Instructions:
map是经过处理后的map对象,JSONObject.toJSON(map).toString();将其转为Json字符串,传到了前台。因为前台是通过ajax传值并进入controller中的。
总结:
1. Json对象和Json字符串的转换,主要常用的两种方式Gson和fastjson
2. fastjson中JSONObject.parseObject();将字符串解析为对象形式;
3.JSONObject.toJSON(map).toString();将对象形式转换为Json字符串。