JAVA语言字符串和对象相互转化
小标 2018-07-13 来源 : 阅读 734 评论 0

摘要:本文主要向大家介绍了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);

 

 

}

 

 

}

 


 


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程