json格式字符串与java对象相互转换

废话不多说。 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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值