摘要:本文主要向大家介绍了JAVA语言字符串和对象相互转化,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言字符串和对象相互转化,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
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;
}
@Override
public 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;
}
@Override
public 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);
//字符串转化我JsonObject
JsonObject 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 40
at 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);
}
}
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号