Java中json与javaBean⼏种互转的讲解
⼀、java普通对象和json字符串的互转
java对象---->json
⾸先创建⼀个java对象:
public class Student {
//姓名
private String name;
//年龄
private String age;
//住址
private String address;
java中字符串转数组
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", address="
+ address + "]";
}
}
现在java对象转换为json形式:
public static void convertObject() {
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("北京市西城区");
//1、使⽤JSONObject
JSONObject json = JSONObject.fromObject(stu);
//2、使⽤JSONArray
JSONArray array=JSONArray.fromObject(stu);
String String();
String String();
System.out.println("strJson:"+strJson);
System.out.println("strArray:"+strArray);
}
定义了⼀个Student的实体类,然后分别使⽤了JSONObject和JSONArray两种⽅式转化为JSON字符串,下⾯看打印的结果:
json-->javabean
上⾯说明了如何把java对象转化为JSON字符串,下⾯看如何把JSON字符串格式转化为java对象,
⾸先需要定义两种不同格式的字符串,需要使⽤\对双引号进⾏转义。
public static void jsonStrToJava(){
//定义两种不同格式的字符串
String objectStr="{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}";
String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}]";
//1、使⽤JSONObject
JSONObject jsonObject=JSONObject.fromObject(objectStr);
Student stu=(Bean(jsonObject, Student.class);
//2、使⽤JSONArray
JSONArray jsonArray=JSONArray.fromObject(arrayStr);
//获得jsonArray的第⼀个元素
Object (0);
JSONObject jsonObject2=JSONObject.fromObject(o);
Student stu2=(Bean(jsonObject2, Student.class);
System.out.println("stu:"+stu);
System.out.println("stu2:"+stu2);
}
运⾏结果:
从上⾯的代码中可以看出,使⽤JSONObject可以轻松的把JSON格式的字符串转化为java对象,但是使⽤JSONArray就没那么容易了,因为它有“[]”符号,所以我们这⾥在获得了JSONArray的对象之后,取其第⼀个元素即我们需要的⼀个student的变形,然后使⽤JSONObject轻松获得。
⼆、list和json字符串的互转
下⾯将list转化为json字符串:
public static void convertListObject() {
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("北京市西城区");
Student stu2=new Student();
stu2.setName("JSON2");
stu2.setAge("23");
stu2.setAddress("北京市西城区");
//注意如果是list多个对象⽐需要使⽤JSONArray
JSONArray array=JSONArray.fromObject(stu);
String String();
System.out.println("strArray:"+strArray);
}
运⾏结果为:
strArray:[{"address":"北京市西城区","name":"JSON","age":"23"},{"address":"北京市西城
区","name":"JSON2","age":"23"}]
如果使⽤JSONObject进⾏转换会出现:
Exception in thread "main" net.sf.json.JSONException: 'object' is an array. Use JSONArray instead
下⾯将json串转换为list
public static void jsonToList(){
String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"},{\"name\":\"JSON2\",\"age\":\"24\",\"address\":\"北京市西城区\"}]";    //转化为list
List<Student> list2=(List<Student>)List(JSONArray.fromObject(arrayStr), Student.class);
for (Student stu : list2) {
System.out.println(stu);
}
//转化为数组
Student[] ss =(Student[])Array(JSONArray.fromObject(arrayStr),Student.class);
for (Student student : ss) {
System.out.println(student);
}
}
运⾏结果为:
三、map和json字符串的互转
map转化为json字符串
public static void mapToJSON(){
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("中国上海");
Map<String,Student> map=new HashMap<String,Student>();
map.put("first", stu);
//1、JSONObject
JSONObject mapObject=JSONObject.fromObject(map);
System.out.println("mapObject:"+String());
//2、JSONArray
JSONArray mapArray=JSONArray.fromObject(map);
System.out.println("mapArray:"+String());
}
运⾏结果:
json字符串转化为map:
public static void jsonToMap(){
String strObject="{\"first\":{\"address\":\"中国上海\",\"age\":\"23\",\"name\":\"JSON\"}}";
//JSONObject
JSONObject jsonObject=JSONObject.fromObject(strObject);
Map map=new HashMap();
map.put("first", Student.class);
/
/使⽤了toBean⽅法,需要三个参数
MyBean my=(Bean(jsonObject, MyBean.class, map);
System.out.First());
}
注意在转化为map的时候需要创建⼀个类,类⾥⾯需要有first属性跟json串⾥⾯的⼀样:
使⽤toBean()⽅法是传⼊了三个参数,第⼀个是JSONObject对象,第⼆个是MyBean.class,第三个是⼀个Map对象。通过MyBean可以知道此类中要有⼀个first的属性,且其类型为Student,要和map中的键和值类型对应,即,first对应键 first类型对应值的类型。
运⾏结果:
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。如果你想了解更多相关内容请查看下⾯相关链接

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。