FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换操作

fastJson对于json格式字符串的解析主要用到了一下三个类:

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

JSONObject:fastJson提供的json对象。

JSONArray:fastJson提供json数组对象。

我们可以把JSONObject当成一个Map<String,Object>来看,只是JSONObject提供了更为丰富便捷的方法,方便我们对于对象属性的操作。我们看一下源码。

同样我们可以把JSONArray当做一个List<Object>,可以把JSONArray看成JSONObject对象的一个集合。

此外,由于JSONObject和JSONArray继承了JSON,所以说也可以直接使用两者对JSON格式字符串与JSON对象及javaBean之间做转换,不过为了避免混淆我们还是使用JSON。

首先定义三个json格式的字符串,作为我们的数据源。

//json字符串-简单对象型
private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";
//json字符串-数组类型
private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
//复杂格式json字符串
private static final String COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}"; 

示例1:JSON格式字符串与JSON对象之间的转换。

示例1.1-json字符串-简单对象型与JSONObject之间的转换

 /**
 * json字符串-简单对象型与JSONObject之间的转换
 */
 public static void testJSONStrToJSONObject(){
 JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);
 //JSONObject jsonObject1 = JSONObject.parseObject(JSON_OBJ_STR); //因为JSONObject继承了JSON,所以这样也是可以的
 System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
 }

示例1.2-json字符串-数组类型与JSONArray之间的转换

 /**
 * json字符串-数组类型与JSONArray之间的转换
 */
 public static void testJSONStrToJSONArray(){
 JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
 //JSONArray jsonArray1 = JSONArray.parseArray(JSON_ARRAY_STR);//因为JSONArray继承了JSON,所以这样也是可以的
 //遍历方式1
 int size = jsonArray.size();
 for (int i = 0; i < size; i++){
  JSONObject jsonObject = jsonArray.getJSONObject(i);
  System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
 }
 //遍历方式2
 for (Object obj : jsonArray) {
  JSONObject jsonObject = (JSONObject) obj;
  System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
 }
 }

示例1.3-复杂json格式字符串与JSONObject之间的转换

 /**
 * 复杂json格式字符串与JSONObject之间的转换
 */
 public static void testComplexJSONStrToJSONObject(){
 JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);
 //JSONObject jsonObject1 = JSONObject.parseObject(COMPLEX_JSON_STR);//因为JSONObject继承了JSON,所以这样也是可以的
 String teacherName = jsonObject.getString("teacherName");
 Integer teacherAge = jsonObject.getInteger("teacherAge");
 JSONObject course = jsonObject.getJSONObject("course");
 JSONArray students = jsonObject.getJSONArray("students");
 }

示例2:JSON格式字符串与javaBean之间的转换。

首先,我们针对数据源所示的字符串,提供三个javaBean。

public class Student {
 private String studentName;
 private Integer studentAge;
 public String getStudentName() {
 return studentName;
 }
 public void setStudentName(String studentName) {
 this.studentName = studentName;
 }
 public Integer getStudentAge() {
 return studentAge;
 }
 public void setStudentAge(Integer studentAge) {
 this.studentAge = studentAge;
 }
}
public class Course {
 private String courseName;
 private Integer code;
 public String getCourseName() {
 return courseName;
 }
 public void setCourseName(String courseName) {
 this.courseName = courseName;
 }
 public Integer getCode() {
 return code;
 }
 public void setCode(Integer code) {
 this.code = code;
 }
}
public class Teacher {
 private String teacherName;
 private Integer teacherAge;
 private Course course;
 private List<Student> students;
 public String getTeacherName() {
 return teacherName;
 }
 public void setTeacherName(String teacherName) {
 this.teacherName = teacherName;
 }
 public Integer getTeacherAge() {
 return teacherAge;
 }
 public void setTeacherAge(Integer teacherAge) {
 this.teacherAge = teacherAge;
 }
 public Course getCourse() {
 return course;
 }
 public void setCourse(Course course) {
 this.course = course;
 }
 public List<Student> getStudents() {
 return students;
 }
 public void setStudents(List<Student> students) {
 this.students = students;
 }
}

json字符串与javaBean之间的转换推荐使用 TypeReference<T> 这个类,使用泛型可以更加清晰,当然也有其它的转换方式,这里就不做探讨了。

示例2.1-json字符串-简单对象型与javaBean之间的转换

 /**
 * json字符串-简单对象与JavaBean_obj之间的转换
 */
 public static void testJSONStrToJavaBeanObj(){
 Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});
 //Student student1 = JSONObject.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});//因为JSONObject继承了JSON,所以这样也是可以的
 System.out.println(student.getStudentName()+":"+student.getStudentAge());
 }

示例2.2-json字符串-数组类型与javaBean之间的转换

/**
 * json字符串-数组类型与JavaBean_List之间的转换
 */
 public static void testJSONStrToJavaBeanList(){
 ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});
 //ArrayList<Student> students1 = JSONArray.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});//因为JSONArray继承了JSON,所以这样也是可以的
 for (Student student : students) {
  System.out.println(student.getStudentName()+":"+student.getStudentAge());
 }
 }

示例2.3-复杂json格式字符串与与javaBean之间的转换

 /**
 * 复杂json格式字符串与JavaBean_obj之间的转换
 */
 public static void testComplexJSONStrToJavaBean(){

 Teacher teacher = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});
 //Teacher teacher1 = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});//因为JSONObject继承了JSON,所以这样也是可以的
 String teacherName = teacher.getTeacherName();
 Integer teacherAge = teacher.getTeacherAge();
 Course course = teacher.getCourse();
 List<Student> students = teacher.getStudents();
 }

对于TypeReference<T>,由于其构造方法使用 protected 进行修饰,所以在其他包下创建其对象的时候,要用其实现类的子类:new TypeReference<Teacher>() {}

此外的:

1,对于JSON对象与JSON格式字符串的转换可以直接用 toJSONString()这个方法。

2,javaBean与JSON格式字符串之间的转换要用到:JSON.toJSONString(obj);

3,javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。

最后说一点,我们作为程序员,研究问题还是要仔细深入一点的。当你对原理了解的有够透彻,开发起来也就得心应手了,很多开发中的问题和疑惑也就迎刃而解了,而且在面对其他问题的时候也可做到触类旁通。当然在开发中没有太多的时间让你去研究原理,开发中要以实现功能为前提,可等项目上线的后,你有大把的时间或者空余的时间,你大可去刨根问底,深入的去研究一项技术,为觉得这对一名程序员的成长是很重要的事情。

总结

以上所述是小编给大家介绍的FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • java使用FastJson解析Json数据

    fastjson 是一个性能极好的用 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发. 主要特点: 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson) 强大(支持普通JDK类包括任意Java Bean Class.Collection.Map.Date或enum) 零依赖(没有依赖其它任何类库除了JDK) 一 .生成Json: JavaBean.List<JavaBean>.List<String>.List<Map&l

  • Spring Boot使用FastJson解析JSON数据的方法

    个人使用比较习惯的json框架是fastjson,所以spring boot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析呢? 1.引入fastjson依赖库: <!--添加fastjson解析JSON数据--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <versio

  • fastjson生成json时Null属性不显示的解决方法

    举个例子 Map < String , Object > jsonMap = new HashMap< String , Object>(); jsonMap.put("a",1); jsonMap.put("b",""); jsonMap.put("c",null); jsonMap.put("d","wuzhuti.cn"); String str = JSO

  • 关于fastjson的@JSONField注解的一些问题(详解)

    @JSONField 看源码它可以作用于字段和方法上. 引用网上说的, 一.作用Field @JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称. 但是我在使用中,发现并不如上所说. 例如 @JSONField(name="project_id") private Long ProjectID 发现bean 转json的时候并是"project_id":xxx的形式,json转bean的时候也不会把"proj

  • 浅谈fastjson的常用使用方法

    如下所示: package Demo; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Vector; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; imp

  • C#简单快速的json组件fastJSON使用介绍

    JSON数据格式简洁,用于数据的持久化和对象传输很实用.最近在做一个Razor代码生成器,需要把数据库的表和列的信息修改后保存下来,想到用JSON序列化对象并保存,需要时再反序列化成对象会简单一些.codeplex上发现了fastJSON项目,好像很不错的样子.这里是作者做的性能测试: 代码调用 复制代码 代码如下: namespace test { class Program { static void Main(string[] args) { var zoo1 = new zoo(); z

  • FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换操作

    fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. JSONObject:fastJson提供的json对象. JSONArray:fastJson提供json数组对象. 我们可以把JSONObject当成一个Map<String,Object>来看,只是JSONObject提供了更为丰富便捷的方法,方便我们对于对象属性的操作.我们看一下源码. 同样我们可以把JSONArra

  • 详解JavaScript中js对象与JSON格式字符串的相互转换

    首先我们来看一下js中JSON格式的字符串 var JSONStr1 = "{\"name\" : \"张三\"}"; 注意以下的写法不是js中JSON格式的字符串,它只是一个js的字符串. var JSONStr2 = "{'name' : '张三'}"; 我们看JSON语法中对于字符串的定义:是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义.一个字符(character)即一个单独的字符串(characte

  • 当自定义数据属性为json格式字符串时jQuery的data api问题探讨

    jQuery 的 data API 实现方式有缓存数据的效果 使用 IE 7 (IE8+ 在控制台切换至IE7 模式),当DOM 节点有自定义数据属性时,检查 DOM 节点即可看到 形如 jQuery18305664906559272507 的属性,这便是 用于从数据存储对象中获取自定义数据的建. 当自定义数据属性是一个 json 格式字符串时,缓存的数据如果被修改, 则修改后的数据继续存在于缓存系统中, 如果不留意,这可能导致一些BUG 复制代码 代码如下: <!DOCTYPE HTML>

  • json格式的javascript对象用法分析

    本文实例分析了json格式的javascript对象用法.分享给大家供大家参考,具体如下: 格式: objectName = { property1:value1, property2:value2, -, propertyN:valueN } property是对象的属性 ,value则是对象的值,值可以是字符串.数字或对象三者之一 例一: 值为字符串和数字 var user={ name:"user1", age:18 }; 例二:值为字符串和对象 var user={ //use

  • 使用JavaScript构建JSON格式字符串实现步骤

    如果你现在正在使用Restful API,并且你需要通过web项目来构建json格式字符串的响应,那么这篇文章将帮助你使用javascript来创建json格式字符串.这是非常有用的,我们将通过jQuery插件$.toJSON把数据对象转换为json格式. 使用JavaScript构建JSON格式字符串 JavaScript代码: 在这里包含了javascript代码.$("#form").submit(function(){}- delete_button是form标签的ID,我们通

  • JS中的数组转变成JSON格式字符串的方法

    有一个JS数组,如: var arr = [["projectname1","projectnumber1"],["projectname2","projectnumber2"],["projectname3","projectnumber3"]]; 想将此数组转换成JSON字符串,如: var jsonarr = [{"projectname":projectnam

  • C#实现将类的内容写成JSON格式字符串的方法

    本文实例讲述了C#实现将类的内容写成JSON格式字符串的方法.分享给大家供大家参考.具体如下: 本例中建立了Person类,赋值后将类中内容写入到字符串中 运行本代码需要添加引用动态库Newtonsoft.Json 程序代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //需要引用 Newtonsoft.Js

  • C#实现json格式转换成对象并更换key的方法

    本文实例讲述了C#实现json格式转换成对象并更换key的方法.分享给大家供大家参考.具体分析如下: 由于是不标准的序列化对象类型,因此你无法通过标准的反序列化类来实现,需要自定义一个序列化类或者简单点,直接自定义一个方法解析Json数据.解析后的数据用Dictionary来存放. string str = "{\"name\": \"甄嬛体\",\"2012-05-04 14:59\": \"5724\"}&quo

  • jQuery asp.net 用json格式返回自定义对象

    客户端用一个html页面调用一个ashx文件(一般http处理程序),返回 json格式的自定义对象: html: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org

  • PHP基于CURL发送JSON格式字符串的方法示例

    本文实例讲述了PHP基于CURL发送JSON格式字符串的方法.分享给大家供大家参考,具体如下: /* * post 发送JSON 格式数据 * @param $url string URL * @param $data_string string 请求的具体内容 * @return array * code 状态码 * result 返回结果 */ function post_json_data($url, $data_string) { $ch = curl_init(); curl_seto

随机推荐