废话不多说。 json格式我们一般常用的会有两种。
第一种,对象格式:
{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”}
第二种,对象数组格式:
[{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”},{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”}]
可以看出两种格式区别就在于转换的是单个对象还是多个对象。
一.java对象转JSON字符串:
第一种对象格式,java对象转JSON格式字符串的方法:
1.我们先创建一个Map,然后向其中添加数据:
Map<String, String> map = new HashMap<>();
map.put("a","1");
map.put("b","2");
map.put("c","3");
map.put("d","4");
2.我们将map转换成JSON格式的字符串:
(这里需要注意,我们导包导入的是net.sf.json-lib 这个包)
maven的pom文件如下:
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
(这里需要注意一下,jdk15是必须写的,自动导包是不会添加上的,需要手动添加)
JSONObject jsonObject = JSONObject.fromObject(map);
String strJsonOb = jsonObject.toString();
输出strJsonOb 得到:
{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”}
第二种对象数组格式,java对象转JSON格式字符串的方法:
1.将map转换成JSON格式的字符串:
JSONArray jsonArray = JSONArray.fromObject(map);
String strJsonAr = jsonArray.toString();
输出得到
[{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”}]
(当然了,既然是数组,那一定应该是多个对象才看着像个样子)
2.我们再创建一个Map并赋值:
Map<String, String> map1 = new HashMap<>();
map1.put("e","1");
map1.put("f","2");
map1.put("g","3");
map1.put("h","4");
然后我们再创建一个List集合并并将两个Map加入:
List<Map<String, String>> list = new ArrayList<>();
list.add(map);
list.add(map1);
现在,我们把list转换成JSON格式字符串
JSONArray jsonArray = JSONArray.fromObject(list);
String strJsonAr = jsonArray.toString();
输出如下:
[{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”},{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”}]
二.JSON格式字符串转java对象
第一种对象格式,JSON格式字符串转java对象的方法:
1.将字符串{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”}转成java对象:
这里的参数strJsonOb为上方字符串{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”}
JSONObject mapjson = JSONObject.fromObject(strJsonOb);
Map<String, String> jsonMap = (Map)JSONObject.toBean(mapjson, Map.class);
2.我们输出一下Map:
for (Map.Entry<String, String> e :jsonMap.entrySet()){
System.out.println("Key值为:"+ e.getKey().toString() +",Value值为:" + e.getValue().toString());
}
输出得到:
Key值为:a,Value值为:1
Key值为:b,Value值为:2
Key值为:c,Value值为:3
Key值为:d,Value值为:4
注意:如果不是自定义类型比如上方例子可以直接强行转换!例如:
Map<String, String> jsonMap = (Map<String, String>)mapjson;
第二种对象数组格式,JSON格式字符串转java对象的方法:
1.将字符串[{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”},{“a”:“1”,“b”:“2”,“c”:“3”,“d”:“4”}]转成java对象并输出:
JSONArray listjson = JSONArray.fromObject(strJsonAr);
for (int i = 0; i < listjson.size(); i++) {
JSONObject jsonO = JSONObject.fromObject(listjson.get(i));
Map<String, String> oJson = (Map)JSONObject.toBean(jsonO,Map.class);
for (Map.Entry<String, String> e :oJson.entrySet()){
System.out.println("Key值为:"+ e.getKey().toString() +",Value值为:" + e.getValue().toString());
}
}
输出得到:
Key值为:a,Value值为:1
Key值为:b,Value值为:2
Key值为:c,Value值为:3
Key值为:d,Value值为:4
Key值为:e,Value值为:1
Key值为:f,Value值为:2
Key值为:g,Value值为:3
Key值为:h,Value值为:4
注意:如果不是自定义类型比如上方例子可以直接强行转换!例如:
List<Map<String, String>> list1 = (List<Map<String, String>>)listjson;