json字符串和java对象的相互转化

来源:互联网 发布:手机淘宝删除差评链接 编辑:程序博客网 时间:2024/06/05 11:33

1、将字符串转化为java对象前,先检查字符串是否符合json格式

在线检查json格式

例子:

1)


字符串:{"id":0,"name":"team0","students":[{"id":0,"name":"student0"}]}符合json格式

2)


字符串:{"id":0,"name":"team0","students":"[{"id":0,"name":"student0"}]"}不符合json格式

2、json字符串和java对象相互的方法

2_1、使用com.google.gson

例子:

2_1_1、实体

package test.jsonobject;public class Student {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Student() {super();// TODO Auto-generated constructor stub}public Student(int id, String name) {super();this.id = id;this.name = name;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + "]";}}

package test.jsonobject;import java.util.List;public class Team {private int id;private String name;private List<Student> students;public Team() {super();// TODO Auto-generated constructor stub}public Team(int id, String name, List<Student> students) {super();this.id = id;this.name = name;this.students = students;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Student> getStudents() {return students;}public void setStudents(List<Student> students) {this.students = students;}@Overridepublic String toString() {return "Team [id=" + id + ", name=" + name + ", students=" + students+ "]";}}

2_1_2、测试类

package test.jsonobject;import java.util.ArrayList;import java.util.List;import com.google.gson.Gson;import com.google.gson.JsonArray;import com.google.gson.JsonElement;import com.google.gson.JsonObject;public class GoogleGjsonTest {public static void main(String[] args) {//对象到json字符串Student s0 = new Student(0,"student0");//Student s1 = new Student(0,"student0");List<Student> students = new ArrayList<>();students.add(s0);//students.add(s1);Team team = new Team(0,"team0",students);Gson gson = new Gson();String json = gson.toJson(team);System.out.println(json);//输出结果:{"id":0,"name":"team0","students":[{"id":0,"name":"student0"},{"id":0,"name":"student0"}]}//字符串转化为对象String json1 = "{\"id\":0,\"name\":\"team0\",\"students\":[{\"id\":0,\"name\":\"student0\"}]}";System.out.println("json1:"+json1);Team team1 = gson.fromJson(json1, Team.class);System.out.println("team1:"+team1);//字符串转化我JsonObjectJsonObject jsonObject0 = gson.fromJson(json1, JsonObject.class);System.out.println("jsonObject0:"+jsonObject0);JsonElement jsonElement0 = jsonObject0.get("id");System.out.println("jsonElement0:"+jsonElement0);JsonElement jsonElement1 = jsonObject0.get("name");System.out.println("jsonElement1:"+jsonElement1);JsonElement jsonElement2 = jsonObject0.get("students");System.out.println("jsonElement2:"+jsonElement2);JsonArray asJsonArray = jsonElement2.getAsJsonArray();System.out.println("asJsonArray:"+asJsonArray);String name = asJsonArray.get(0).getAsJsonObject().get("name").toString();System.out.println(name);/* * {"id":0,"name":"team0","students":"[{"id":0,"name":"student0"}]"} * 这个串根本不符合JSON格式,当然不能转化为对象 *//*String json2 = "{\"id\":0,\"name\":\"team0\",\"students\":\"[{\"id\":0,\"name\":\"student0\"}]\"}";System.out.println(json2);JsonObject fromJson = gson.fromJson(json2, JsonObject.class);System.out.println(fromJson);*//*    Caused by: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 40at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1505)at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:480)at com.google.gson.stream.JsonReader.hasNext(JsonReader.java:403)at com.google.gson.internal.bind.TypeAdapters$25.read(TypeAdapters.java:666)at com.google.gson.internal.bind.TypeAdapters$25.read(TypeAdapters.java:642)at com.google.gson.Gson.fromJson(Gson.java:803)... 4 more */}}

2_2、使用net.sf.json

package test.jsonobject;import java.util.ArrayList;import java.util.List;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class NetSfJsonTest {public static void main(String[] args) {//将对象转化为字符串Student s0 = new Student(0,"student0");List<Student> students = new ArrayList<>();students.add(s0);Team team = new Team(0,"team0",students);JSONObject fromObject = JSONObject.fromObject(team);System.out.println(fromObject.toString());//字符串转化为对象String json1 = "{\"id\":0,\"name\":\"team0\",\"students\":[{\"id\":0,\"name\":\"student0\"}]}";System.out.println("json1:"+json1);JSONObject fromObject2 = JSONObject.fromObject(json1);JSONArray jsonArray = fromObject2.getJSONArray("students");System.out.println(jsonArray);String name = (String) jsonArray.getJSONObject(0).get("name");System.out.println(name);Team bean = (Team) JSONObject.toBean(fromObject2, Team.class);System.out.println(bean);}}





0 0
原创粉丝点击