使用json格式的数据进行通信
4 Java对象转换成JSON
4.1 问题
将Java对象转换成符合JSON格式的字符串,并测试。
4.2 方案
使用与json-lib.jar相关的jar文件完成类型的转换。
4.3 步骤
步骤一:新建实体类Friend
图- 15
步骤二:新建JSONTest类
在该类中添加四个方法,分别用于测试Java对象转换为JSON字符串,Java数组转换为JSON字符串,JSON字符串转换为Java对象,JSON字符串转换为Java数组。
步骤三:引入jar文件
在添加jar文件的时候,需要导入6个jar文件,缺一不可。如图-16所示。
图- 16
步骤四:添加具体的转换方法:Java对象转换为JSON字符串
图- 17
步骤五:运行结果
图– 18
步骤六:Java数组(集合)转换为JSON字符串
图– 19
运行结果:
图- 20
步骤七:JSON字符串转换为Java对象
图– 21
运行结果:
图- 22
步骤八:JSON字符串转换为Java数组(集合)
图– 23
运行结果:
图- 24
4.4 完整代码
Friend.java文件代码如下:
package bean; public class Friend { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { return this.name + " " + this.age; } }
JSONTest.java文件代码如下:
package json; import java.util.ArrayList; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import bean.Friend; public class JSONTest { /** * Java对象转换为JSON字符串 */ public static void test1() { Friend f = new Friend(); f.setName("Zoro"); f.setAge(19); JSONObject jsonObj = JSONObject.fromObject(f); String jsonStr = jsonObj.toString(); System.out.println(jsonStr); } /** * Java数组转换为JSON字符串 */ public static void test2() { List<Friend> fs = new ArrayList<Friend>(); for (int i = 0; i < 3; i++) { Friend f = new Friend(); f.setName("Zoro" + (i + 1)); f.setAge(19 + i); fs.add(f); } JSONArray jsonArr = JSONArray.fromObject(fs); String jsonStr = jsonArr.toString(); System.out.println(jsonStr); } /** * JSON字符串转换为Java对象 */ public static void test3(){ String jsonStr = "{\"name\":\"Luffy\",\"age\":17}"; JSONObject jsonObj = JSONObject.fromObject(jsonStr); Friend friend = (Friend)JSONObject. toBean(jsonObj, Friend.class); System.out.println(friend); } /** * JSON字符串转换为Java数组 */ public static void test4(){ String jsonStr = "[{\"name\":\"Luffy\",\"age\":17}," + " {\"name\":\"Zoro\",\"age\":19}]"; JSONArray jsonArr = JSONArray.fromObject(jsonStr); List<Friend> friends = (List<Friend>)JSONArray. toCollection(jsonArr, Friend.class); for(Friend f :friends){ System.out.println(f); } } public static void main(String[] args) { //test1(); //test2(); //test3(); test4(); } }