(1)封装JSON数据的三种方式

1.JSON是什么

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

2.JSON数据表示

JSON数据分为数据结构类型和基本类型,具体的表示有多种方式,总结如下:

数据结构:

Object

Array

基本类型:

String、number、true、false、null

2.1数据结构-Object

《(1)封装JSON数据的三种方式》

2.2数据结构-Array

《(1)封装JSON数据的三种方式》

3.封装JSON数据的三种方式

常见的封装JSON数据的三种方式:
*调用原生JSONObject类封装JSON数据
*map集合的方式封装JSON数据
*Java Bean的方式封装JSON数据

3.1使用JSONObject类的put()方法封装JSON数据

使用JSONObject类中的put方法封装出符合key-value方式IDEJSON数据,测试的方法如下:

public static void jsonObjectSample(){
    //通过JSONObject类构造出对象,该对象去调用JSONObject中的put方法去拼装出JSON格式数据   
    JSONObject jsonObj = new JSONObject();        
    Object nullObject = null;        
    try {            
        //put方法拼接JSON数据格式(key-value数据)            
        jsonObj.put("name", "小明");            
        jsonObj.put("age", 25.2);            
        jsonObj.put("birthday", "1990-01-01");            
        jsonObj.put("school", "新东方");            
        jsonObj.put("major", new String[]{"理发","挖掘机"});            
        jsonObj.put("has_friend", false);            
        jsonObj.put("car", nullObject);            
        jsonObj.put("hourse", nullObject);           
        jsonObj.put("status", 0);            
        System.out.println(jsonObj.toString());        
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

测试结果:

{“birthday”:”1990-01-01″,”has_friend”:false,”major”:[“理发”,”挖掘机”],”school”:”新东方”,”name”:”小明”,”age”:25.2,”status”:0}

3.2使用map集合的方式封装JSON数据

该方式主要是将需要的数据以key-value对的方式封装进map集合中,测试的方法如下:

public static void createJsonByMap(){
        //构建一个map集合,该集合用于存放拼装出的key-value键值对数据
	Map<String, Object> jsonObj = new HashMap<String,Object>();
	jsonObj.put("name", "小明");
	jsonObj.put("age", 25.2);
	jsonObj.put("birthday", "1990-01-01");
	jsonObj.put("school", "新东方");
	jsonObj.put("major", new String[]{"理发","挖掘机"});
	jsonObj.put("has_friend", false);
	jsonObj.put("car", null);
	jsonObj.put("hourse", null);
	jsonObj.put("status", 0);
	System.out.println(new JSONObject(jsonObj).toString());
}

测试结果:

{“birthday”:”1990-01-01″,”has_friend”:false,”major”:[“理发”,”挖掘机”],”school”:”新东方”,”name”:”小明”,”age”:25.2,”status”:0}.

 对比以上两种方式:
 1.原生的JSONObject在封装JSON数据时,put方法不能给value直接赋值为null,需要引用空值对象
 2.map集合方式封装JSON数据时,put填入数据可以直接给value赋值为null

3.3使用javaBean方式封装JSON数据

对使用JavaBean方式封装JSON数据,实际上就是引用类的构造方法赋值。

首先,我们建一个包含所需字段的普通类,Bean01.class:

/**
 *定义一个pojo类,后边将使用javabean方式构造出json数据,
 */
public class Bean01 {
	private String name;
	private String school;
	private boolean has_friend;
	private double age;
	private Object car;
	private Object hourse;
	private String[] major;
	private String status;
	private String birthday;
	/*此处省略set和get方法*/	
	public Bean01() {
		
	}
	public Bean01(String name, String school, boolean has_friend, double age, Object car, Object hourse, String[] major,String status, String birthday) {
                this.name = name;
		this.school = school;
		this.has_friend = has_friend;
		this.age = age;
		this.car = car;
		this.hourse = hourse;
		this.major = major;
		this.status = status;
		this.birthday = birthday;
	}
	@Override
	public String toString() {
		return "Bean01 [name=" + name + ",
                             school=" + school + ",
                             has_friend=" + has_friend + ",
                             age=" + age + ",
                             car="+ car + ",
                             hourse=" + hourse + ",
                             major=" + Arrays.toString(major) + ",
                             status=" + status+ ",
                             birthday=" + birthday + "
                             ]";
	}
}

测试方法:

public static void createJsonByBean(){
	Bean01 jsonObj = new Bean01();
	jsonObj.setName("小明");
	jsonObj.setAge(25.2);
	jsonObj.setBirthday("1990-01-01");
	jsonObj.setSchool("新东方");
	jsonObj.setMajor(new String[]{"理发","挖掘机"});
	jsonObj.setHas_friend(false);
	jsonObj.setCar(null);
	jsonObj.setHourse(null);
	jsonObj.setStatus("0");
	System.out.println(new JSONObject(jsonObj));
}

测试结果:

{“birthday”:”1990-01-01″,”has_friend”:false,”major”:[“理发”,”挖掘机”],”school”:”新东方”,”name”:”小明”,”age”:25.2,”status”:”0″}
 

4.小结

1.JSONObject在封装JSON数据时,put方法不能给value直接赋值为null,需要引用空值对象

2.Map集合方式封装JSON数据时,put填入数据可以直接给value赋值为null

3.javaBean的方式封装JSON数据较为常用,它实际上是通过目标类的构造方法设值,进而封装出JSON格式数据

 

 

 

    原文作者:洒家肉山大魔王
    原文地址: https://blog.csdn.net/qq_27706119/article/details/85040489
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞