java中对象和JSON的互转(使用JSON-lib实现)

本文详细介绍了如何在Java中使用JSON-lib库实现JSON与Java对象的互相转换,包括List、Map、Bean、数组等常见数据类型的转换方法,以及如何从JSON字符串中解析出特定的对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发中,通常情况下,后台需要将所有的信息转成JSON格式返回到前端,同时,有时也要将前端传递的JSON格式的信息解析成对象进行处理,这就涉及到了JSON和对象之间的互相转换问题。

什么是JSON

JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。层次结构简洁、清晰,易于人阅读和编写,同时也易于机器解析和生成,而且可以有效地提升网络传输效率。
示例:

{ 
	"people":[ 
		{
			"firstName": "Brett",            
			"lastName":"McLaughlin"        
		},      
		{        
			"firstName":"Jason",
			"lastName":"Hunter"
		}
	]
}

JSON和JAVA对象之间的互转

在java中,主要依靠第三方库来实现快速高效的转换,最常用的有两个:一是阿里的fastjson;二是JSON-lib。
这里采用JSON-lib来实现。

首先,下载JSON-lib包,它支持beans,collections,maps,java arrays 和XML和JSON互相转换。
直接添加maven依赖即可

<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>
</dependency>

切记,一定要在里面加上<classifier>标签,并指明jdk版本号。这里有个问题,当写其他版本号的时候,好像也会报错,查找很多资料并测试后发现,只有当写的版本号是 jdk15 时才会正常。报的错主要是在导入下面的包时,找不到对应的包,直接报红。加上这个标签后就没问题了。

import net.sf.json.JSONObject;
import net.sf.json.JSON;

导好包之后就可以使用了

其他对象转成JSON

1. List集合转换成json方法
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list );

2. Map集合转换成json方法
Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
JSONObject json = JSONObject.fromObject(map);

3. Bean转换成json代码
JSONObject jsonObject = JSONObject.fromObject(new JsonBean());

4. 数组转换成json代码
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);

5. 一般数据转换成json代码
JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" )
    
6、beans转换成json代码
List list = new ArrayList();
JsonBean2 jb1 = new JsonBean2();
jb1.setCol(1);
jb1.setRow(1);
jb1.setValue("xx");
JsonBean2 jb2 = new JsonBean2();
jb2.setCol(2);
jb2.setRow(2);
jb2.setValue("");
list.add(jb1);
list.add(jb2);
JSONArray ja = JSONArray.fromObject(list);


其实,使用的都是一个方法 .fromObject()

JSON转成对象

String existImg = goods.getImg();   // 拿到一个JSON格式的字符串
JSONObject json = JSONObject.fromObject(existImg);   // 先解析为JSON对象
List<String> imgsList = (List<String>) json.get("imgs");  // 再根据键在JSON里面取出值,并通过类型转换变为正常的对象。

这个前提是,我们应该要知道json中存储的是什么对象类型,否则可能就会解析出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值