JSON格式用于数据传输、bean用于封装数据信息、String用于展示封装信息、json格式的内容用json工具或者之间在json.cn展示比较清晰。
一、将Sting转为Json
在开发中,经常是前端发送一串数据过来之后,是通过一个参数带着一串值过来,这一串值是String 格式的,但是里面的内容其实是json格式类型的,所以拿到值之后就要将该值转化成json格式,然后获取里面指定的key就可以拿到该值了。JSONObject jsonObject = JSON.parseObject(tt);
这样就可以将一串参数转化成json对象了,然后通过下面指定的key获取特定的值,如下面所示String imei= (String) jsonObject.get("imei");
在返回数据中,要经常返回指定的json格式,我用的是如下所示:Mapmap=new HashMap<>();
map.put("ret",1);
map.put("ret1","no");
map.put("tag1",sh.getTOpen());
map.put("video",sh.getfOpen());
map.put("video1",sh.getVOpen());
map.put("video2",sh.getViOpen());
String json=JSON.toJSONString(map);
然后return json;就可以了,不过一般这个值是要加密之后再上传给前端的。
二、fastjson的使用
1、基础
FastJSON是一个Java语言编写的高性能,功能完善,完全支持http://json.org的标准的JSON库。
fastJSON的使用说到底就是JSON对象、bean对象、字符串类型,三者之间的相互转化
fastjson 常用 API:public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
解析:String→bean: parseObject(String text, Class clazz); // 把JSON文本parse为bean;
bean→String:toJSONString(Object object);//把bean转换为JSON文本
bean→JSON: toJSON(Object javaObject);//把bean转换为JSONObject或者JSONArray
JSON→String: toJSONString();
String→JSON:parse(String text);// 把JSON文本parse为JSONObject或者JSONArray
JSON格式用于数据传输、bean用于封装数据信息、String用于展示封装信息、json格式的内容用json工具或者之间在json.cn展示比较清晰,
fastJSON 引用路径:com.alibaba.fastjson.JSON;
引入依赖:
com.alibaba
fastjson
1.1.23
示例:/**
*fastJSON测试
*/
public class Test {
String userName;
String sex;
}
1.bean转字符串格式
JSON.toJSONString(Object object) 这个方法很常用,就是转成字符串格式Test test = new Test();
test.setUserName("张三");
test.setSex("男");
System.out.print(JSON.toJSONString(test));
输出结果:{"sex":"男","userName":"张三"}
2.将bean转为JSON
将bean转为JSON(JSONObject格式、JSONArray格式于此类似)Object toJSON(Object javaObject)
示例:Test test = new Test();
test.setUserName("张三");
test.setSex("男");
//将bean转换为JSON
JSONObject json = (JSONObject) JSON.toJSON(test);
System.out.print("userName:"+json.get("userName"));
输出结果:userName:张三
3.把JSON文本parse为JSONObject或者JSONArrayObject parse(String text);Test test = new Test();
test.setUserName("张三");
test.setSex("男");
String str = JSON.toJSONString(test);
JSONObject jsonObj = (JSONObject) JSON.parse(str);
System.out.print("userName:"+jsonObj.get("userName"));
输出结果:userName:张三
4.把JSON文本parse为beanTest test = new Test();
test.setUserName("张三");
test.setSex("男");
String str = JSON.toJSONString(test);
Test testTemp = JSON.parseObject(str,Test.class);
System.out.print("userName:"+testTemp.getUserName());
输出结果:userName:张三
2、序列化
序列化就是指 把JavaBean对象转成JSON格式的字符串。
com.alibaba.fastjson.JSON提供了许多方法(多态)实现序列化。
1.基本的序列化String objJson = JSON.toJSONString(Object object);
传入一个对象,将对象转成JSON字符串。
例1:将Map转成JSONMap map = new HashMap();
map.put("key1", "One");
map.put("key2", "Two");
String mapJson = JSON.toJSONString(map);
输出结果:{"key1":"One","key2":"Two"}
例2:自定义JavaBean User转成JSON。User user = new User();
user.setUserName("李四");
user.setAge(24);
String userJson = JSON.toJSONString(user);
输出结果:{"age":24,"userName":"李四"}
3、反序列化
反序列化就是把JSON格式的字符串转化为Java Bean对象。
com.alibaba.fastjson.JSON提供了许多方法(多态)实现反序列化。
指定Class信息反序列化。
例3:将例2反序列化。User user1 = JSON.parseObject(userJson, User.class);
System.out.println(user1.getUserName());
输出结果:李四
泛型的反序列化
泛型的反序列化,使用 TypeReference 传入类型信息。
例5:将例1反序列化。Map map1 = JSON.parseObject(mapJson, new TypeReference>(){});
System.out.println(map1.get("key1"));
System.out.println(map1.get("key2"));
输出结果:One
Two
JSONObject,JSONArray
JSONObject,JSONArray是JSON的两个子类。
JSONObject相当于 Map,
JSONArray相当于List。
简单方法示例:
例6:将Map转成JSONObject,然后添加元素,输出。Map map = new HashMap();
map.put("key1", "One");
map.put("key2", "Two");
JSONObject j = new JSONObject(map);
j.put("key3", "Three");
System.out.println(j.get("key1"));
System.out.println(j.get("key2"));
System.out.println(j.get("key3"));
例7:将List对象转成JSONArray,然后输出。List> list = new ArrayList>();
Map map = new HashMap();
map.put("key1", "One");
map.put("key2", "Two");
Map map2 = new HashMap();
map2.put("key1", "Three");
map2.put("key2", "Four");
list.add(map);
list.add(map2);
JSONArray j = JSONArray.parseArray(JSON.toJSONString(list));
for(int i=0; i
System.out.println(j.get(i));
}
输出结果:{"key1":"One","key2":"Two"}
{"key1":"Three","key2":"Four"}