fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
导入依赖
com.alibaba
fastjson
1.2.47
其中JSONArray : 相当于List
JSONObject: 相当于Map
JSON字符串转JSONObject
使用parseObject()方法
String str = "{\n" +
"\"merchantId\": 136188,\n" +
"\"merchantName\": \"03071商户\",\n" +
"\"merchantNo\": \"00080471\",\n" +
"\"merchantMark\": null,\n" +
"\"agentsName\": \"江苏\",\n" +
"\"agentsMark\": \"010D\",\n" +
"\"agentsId\": 51,\n" +
"\"agentsNo\": null,\n" +
"\"locationProvince\": null,\n" +
"\"locationCity\": null,\n" +
"\"locationRegion\": null,\n" +
"\"createTime\": \"2018-06-15 14:33:59\"\n" +
"}";
JSONObject object = JSONObject.parseObject(str);
获取数据
使用对应的get方法获取相应的数据
例如我要获取merchantId需要使用getString()方法
String merchantId = object.getString("merchantId");
System.out.println("merchantId "+merchantId);
这样就拿到了merchanId
插入数据
使用put()方法
object.put("jsonTest","放入一条数据");
System.out.println(object.getString("jsonTest"));
JSONObject对象转JSON字符串
使用JSONObject.toJSONString(JSONObject)
String jsonString = JSONObject.toJSONString(object);
System.out.println(jsonString);
JSONObject转JavaBean
给idea安装一个GsonFormat插件方便自动生成JavaBean的类
首先创建一个空Merchant类
右键找到Generate
点击GsonFormat复制一条Json数据进去
点ok之后可以对Data Type做适当调整,然后继续OK
对应的类就生成出来了
JSONObject转JavaBean对象需要使用
JSONObject.toJavaObject(JSON json, Classclazz);
String str = "{\n" +
"\"merchantId\": 136188,\n" +
"\"merchantName\": \"03071商户\",\n" +
"\"merchantNo\": \"00080471\",\n" +
"\"merchantMark\": null,\n" +
"\"agentsName\": \"江苏\",\n" +
"\"agentsMark\": \"010D\",\n" +
"\"agentsId\": 51,\n" +
"\"agentsNo\": null,\n" +
"\"locationProvince\": null,\n" +
"\"locationCity\": null,\n" +
"\"locationRegion\": null,\n" +
"\"createTime\": \"2018-06-15 14:33:59\"\n" +
"}";
JSONObject object = JSONObject.parseObject(str);
//第一个参数传入JSONObject对象也就是上面的object,第二个时候要转的JavaBean类,我们要转成Merchant
Merchant merchant = JSONObject.toJavaObject(object, Merchant.class);
System.out.println("merchantId "+merchant.getMerchantId());
用得到的merchant对象调用getMerchantId()方法看看是否成功将JSONObject对象转成Javabean对象
JavaBean对象转成JSONObject对象
首先要将JavaBean转成JSON字符串对象再将JSON字符串转成JSONObject对象
String str = "{\n" +
"\"merchantId\": 136188,\n" +
"\"merchantName\": \"03071商户\",\n" +
"\"merchantNo\": \"00080471\",\n" +
"\"merchantMark\": null,\n" +
"\"agentsName\": \"江苏\",\n" +
"\"agentsMark\": \"010D\",\n" +
"\"agentsId\": 51,\n" +
"\"agentsNo\": null,\n" +
"\"locationProvince\": null,\n" +
"\"locationCity\": null,\n" +
"\"locationRegion\": null,\n" +
"\"createTime\": \"2018-06-15 14:33:59\"\n" +
"}";
JSONObject object = JSONObject.parseObject(str);
Merchant merchant;
merchant = JSONObject.toJavaObject(object, Merchant.class);
//将merchant转成JSON字符串
String jsonString = JSONObject.toJSONString(merchant);
//再将jsonString转成JSONObject对象
JSONObject merchantObject = JSONObject.parseObject(jsonString);
System.out.println("createTime " + merchantObject.getString("createTime"));
用得到的merchantObject调用getString("createTime")看看是否成功将merchant对象转成了JSONObject对象
JSON字符串转Map
第一种 使用(Map)JSON.parse(str)
String str = "{\n" +
"\"merchantId\": 136188,\n" +
"\"merchantName\": \"03071商户\",\n" +
"\"merchantNo\": \"00080471\",\n" +
"\"merchantMark\": null,\n" +
"\"agentsName\": \"江苏\",\n" +
"\"agentsMark\": \"010D\",\n" +
"\"agentsId\": 51,\n" +
"\"agentsNo\": null,\n" +
"\"locationProvince\": null,\n" +
"\"locationCity\": null,\n" +
"\"locationRegion\": null,\n" +
"\"createTime\": \"2018-06-15 14:33:59\"\n" +
"}";
Map map = (Map) JSON.parse(str);
System.out.println(map.get("merchantId"));
第二种
用JSON类的parseObject()来解析JSON字符串
String str = "{\n" +
"\"merchantId\": 136188,\n" +
"\"merchantName\": \"03071商户\",\n" +
"\"merchantNo\": \"00080471\",\n" +
"\"merchantMark\": null,\n" +
"\"agentsName\": \"江苏\",\n" +
"\"agentsMark\": \"010D\",\n" +
"\"agentsId\": 51,\n" +
"\"agentsNo\": null,\n" +
"\"locationProvince\": null,\n" +
"\"locationCity\": null,\n" +
"\"locationRegion\": null,\n" +
"\"createTime\": \"2018-06-15 14:33:59\"\n" +
"}";
Map map= (Map) JSON.parse(str);
System.out.println(map.get("merchantId"));
第三种
用JSON类,指定解析类型,来解析JSON字符串
JSON.parseObject(str,Map.class)
String str = "{\n" +
"\"merchantId\": 136188,\n" +
"\"merchantName\": \"03071商户\",\n" +
"\"merchantNo\": \"00080471\",\n" +
"\"merchantMark\": null,\n" +
"\"agentsName\": \"江苏\",\n" +
"\"agentsMark\": \"010D\",\n" +
"\"agentsId\": 51,\n" +
"\"agentsNo\": null,\n" +
"\"locationProvince\": null,\n" +
"\"locationCity\": null,\n" +
"\"locationRegion\": null,\n" +
"\"createTime\": \"2018-06-15 14:33:59\"\n" +
"}";
Map map= JSON.parseObject(str,Map.class); ;
System.out.println(map.get("merchantId"));