国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FastJson在Java后端方面解析使用(二)

這篇具有很好參考價值的文章主要介紹了FastJson在Java后端方面解析使用(二)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? JSON現(xiàn)在常用來做前后端數(shù)據(jù)交互,兩個蝴蝶飛只是簡單的對JSON做一下講解和簡單使用。關于JSON,我還了解的遠遠不夠。由于本人經驗有限,嘴皮子不溜,所以學術性,概念性,底層性的知識點暫時不做介紹。文章中有錯誤之處,歡迎拍磚和指點。在此,特別向阿里團隊表示感謝,謝謝他們開發(fā)出了FastJSON這么好用的Jar包,并且免費開源出來。 兩個蝴蝶飛只是粗淺的談一下使用,非常抱歉,未能理解前輩們深邃的思想。


上一章簡單介紹了JSON簡介及前端簡單解析(一),如果沒有看過,請觀看上一章


一 FastJSON簡短介紹

JSON協(xié)議使用方便,越來越流行,JSON的處理器有很多,這里我介紹一下FastJson,FastJson是阿里的開源框架,被不少企業(yè)使用,是一個極其優(yōu)秀的Json框架。

FastJson的特點:

1.FastJson數(shù)度快,無論序列化和反序列化,都是當之無愧的fast

2.功能強大(支持普通JDK類包括任意Java Bean Class、Collection、Map、Date或enum)

3.零依賴(沒有依賴其它任何類庫)

首先要下載fastjson的jar包。github地址: https://github.com/alibaba/fastjson

這里只牽扯到后端方面,用Junit4框架進行測試

二 FastJSON三個類的簡單介紹

FastJSON包中有三個常用的對象,JSON,JSONObject,JSONArray三個對象。

二.一 JSON類

public abstract class JSON  implements JSONStreamAware, JSONAware{
    
}

JSON類實現(xiàn)了JSONStreamAware和JSONAware接口。

JSONAware接口:

package com.alibaba.fastjson;
public abstract interface JSONAware
{
  //轉換成JSON類型的字符串
  public abstract String toJSONString();
}

JSONStreamAware接口:

public abstract interface JSONStreamAware   //JSON+流+Aware 能力  
{
  // 向里面寫Appendable, 追加。  轉換成JSON字符串
  public abstract void writeJSONString(Appendable paramAppendable)
    throws IOException;
}

Appendable接口:

public interface Appendable {
//添加字符串
     Appendable append(CharSequence csq) throws IOException;
//添加的字符串,可以截取  start,end
    Appendable append(CharSequence csq, int start, int end) throws IOException;
//添加單個字符
    Appendable append(char c) throws IOException;
}

二.二 JSONObject 類

public class JSONObject  extends JSON
  implements Map<String, Object>, Cloneable, Serializable, InvocationHandler{
    
}

JSONObject類繼承了JSON類,實現(xiàn)了Map接口,Cloneable(克隆接口),序列化(Serializable),InvocationHandler(調用處理器)

InvocationHandler.java

public Object invoke(Object proxy, Method method, Object[] args)
        throws Throwable;

默認值為16。

所以JSONObject主要存儲的方式是以Map<Key,Value>的形式進行相應的存儲。存儲的是單值形式。

構造方法:

public JSONObject(Map<String, Object> map) {
       this.map = map;
   }

二.三 JSONArray類

public class JSONArray  extends JSON
 implements List<Object>, Cloneable, RandomAccess, Serializable{}

JSONArray類也繼承了JSON類, 實現(xiàn)了List接口,Cloneable克隆接口,Serializable 序列化接口,RandomAccess接口。

public interface RandomAccess {
    
}

實現(xiàn)了List接口,是以數(shù)組的形式進行相應的存儲。

構造方法:

public JSONArray(List<Object> list) {
          this.list = list;
   }

JSONObject和JSONArray均實現(xiàn)了JSON類,故一般都是用子類,即單值用JSONObject,集合用JSONArray。

三 JSONObject類的具體使用

三.一 轉換成普通字符串格式

轉換的格式為: var obj={“name”:“兩個蝴蝶飛”,“age”:24,“sex”:“男”};

代碼為:

/**
	 * 一個普通的字符串格式.
	 * var obj={"name":"兩個蝴蝶飛","age":24,"sex":"男"};
	 * 用JSONObject進行添加.
	 */
	@Test
	public void testString1(){
		//空構造
		JSONObject json=new JSONObject();
		//內部使用的是map結構,put放置值
		json.put("id",1);
		json.put("name","兩個蝴蝶飛");
		json.put("age",24);
		json.put("sex","男");
		//轉換成json字符串. toJSONString()
		String result=json.toJSONString();
		System.out.println(result);
	}

是字符串格式。

三.二 將JSON字符串進行解析取值

@Test
	/*
	 * 解析JSON字符串
	 * {"name":"兩個蝴蝶飛","age":24,"sex":"男"};
	 */
	public void testToString1(){
		String source="{'name':'兩個蝴蝶飛','age':24,'sex':'男'}";
		//利用靜態(tài)方法parseObject(source),將要解析的資源放進去
		JSONObject json=JSON.parseObject(source);
		//取得數(shù)據(jù)時  可以取得具體的類型
		System.out.println(json.getIntValue("age"));
		System.out.println(json.getString("sex"));
		System.out.println(json.getString("name"));
	}

三.三 利用Map顯式放置值

@Test
	/**
	 * 前面帶一個前綴. 用添加Map
	 * {"person":{"name":"兩個蝴蝶飛","age":24,"sex":"男"}}
	 */
	public void testString2(){
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("name","岳建立");
		map.put("age",24);
		map.put("sex","男");
		JSONObject json=new JSONObject();
		json.put("person",map);
		String result=json.toJSONString();
		System.out.println(result);
		//如果不要前綴,可以直接 {"name":"兩個蝴蝶飛","age":24,"sex":"男"}
		//System.out.println(JSON.toJSONString(map));
	}

三.四 取出Map中的值

@Test
	public void testToString2(){
		String source="{\"person\":{\"sex\":\"男\(zhòng)",\"name\":\"岳建立\",\"age\":24}}";
		JSONObject json=JSON.parseObject(source);
		System.out.println(json.getString("person"));
		// {"name":"兩個蝴蝶飛","age":24,"sex":"男"}
		//繼續(xù)取出
		JSONObject json2=JSON.parseObject(json.getString("person"));
		System.out.println(json2.getString("name"));
		System.out.println(json2.getString("sex"));
		System.out.println(json2.getIntValue("age"));
	}

四 JSONArray的使用

如果屬性過多的話,那么就需要用一個User類進行相應的封裝了。即開始引入對象了。

引入相應的User的類

package com.fastjson.pojo;
/**
  *author 作者 兩個蝴蝶飛
  *version 創(chuàng)建時間 2018年9月16日下午3:42:37	
*/
public class User {
	private int id;
	private String name;
	private int age;
	private String sex;
	private String content;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

四.一 JSONArray 配置單個JavaBean類

  1. 前綴沒有用key值:
@Test
	/**
	 * 將一個單對象轉換成JSON格式
	 * {"age":24,"content":"一個小小的程序員","id":1,"name":"兩個蝴蝶飛","sex":"男"}
	 */
	public void testUser1(){
		User user=new User();
		user.setId(1);
		user.setName("兩個蝴蝶飛");
		user.setSex("男");
		user.setAge(24);
		user.setContent("一個小小的程序員");
                //直接用JSON.toJSONString(); toJSONString(user)
		String result=JSON.toJSONString(user);
		System.out.println(result);
	}
  1. 前綴有key值
@Test       
public void testUser1(){
		User user=new User();
		user.setId(1);
		user.setName("兩個蝴蝶飛");
		user.setSex("男");
		user.setAge(24);
		user.setContent("一個小小的程序員");
		//用JSONObject
		JSONObject json=new JSONObject();
		json.put("user",user);
		String result=json.toJSONString();
		System.out.println(result);
	}
  1. 取出沒有key值的Java Bean
@Test
	public void testToUser4(){
		String source="{\"age\":24,\"content\":\"一個小小的程序員\",\"id\":1,\"name\":\"兩個蝴蝶飛\",\"sex\":\"男\(zhòng)"}";
		//直接轉換成對象
		User user1=JSON.parseObject(source,User.class);
		System.out.println(user1);
	}
  1. 取出有key值的的Java Bean
@Test
	public void testToUser1(){
		String source="{\"user\":{\"age\":24,\"content\":\"一個小小的程序員\",\"id\":1,\"name\":\"兩個蝴蝶飛\",\"sex\":\"男\(zhòng)"}}";
		//直接轉換成對象
		//先取出后面的值
		String result=JSON.parseObject(source).getString("user");
//繼承轉換
		User user1=JSON.parseObject(result,User.class);
		System.out.println(user1);
	}

四.二 JSONArray 配置List 集合

@Test
	//將一個對象數(shù)組集合添加到JSON中,用JSONArray
	/*
	 {"persons":[{"age":0,"content":"小小的程序員而已0","id":0,"name":"兩個蝴蝶飛0","sex":"男"},
	 {"age":0,"content":"小小的程序員而已1","id":1,"name":"兩個蝴蝶飛1","sex":"女"},
	 {"age":0,"content":"小小的程序員而已2","id":2,"name":"兩個蝴蝶飛2","sex":"男"}]}
	 */
	public void testUser2(){
		List<User> users = new ArrayList<User>();  
		for (int i = 0; i < 3; i++) {  
		    User u = new User();  
		    u.setId((i));
		    u.setName("兩個蝴蝶飛"+i);
		    u.setContent("小小的程序員而已"+i);
		    u.setSex(i % 2 == 0 ? "男" : "女");  
		    users.add(u);  
		}
		//String result=JSON.toJSONString(users);
		JSONObject json=new JSONObject();
		json.put("persons",users);
		String result=json.toJSONString();
		System.out.println(result);
	}

解析List集合

@Test
	public void testToUser2(){
		String resource="{\"list\":[{\"id\":0,\"name\":\"兩個蝴蝶飛0\",\"sex\":\"男\(zhòng)"} {\"id\":1,\"name\":\"兩個蝴蝶飛1\",\"sex\":\"女\"},{\"id\":2,\"name\":\"兩個蝴蝶飛2\",\"sex\":\"男\(zhòng)"}]}";
		String text=JSON.parseObject(resource).getString("list");
		//現(xiàn)在,這已經是一個數(shù)組了.如何將數(shù)組進行解析呢? 用JSONArray
		JSONArray arrays=JSON.parseArray(text);
		List<User> allList=new ArrayList<User>();
		for(int i=0;i<arrays.size();i++){
			//用toJavaObject toJavaObject
			User u=JSON.toJavaObject(arrays.getJSONObject(i),User.class);
			allList.add(u);
		}
		for (User user : allList) {
			System.out.println(user.getId()+","+user.getName());
		}
	}

這是常用的幾種解析方式。謝謝

解析成功,謝謝!!!

?文章來源地址http://www.zghlxwxcb.cn/news/detail-664313.html

到了這里,關于FastJson在Java后端方面解析使用(二)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Java后端使用POST請求向mysql中插入Json數(shù)據(jù)的問題

    Cause: java.lang.IllegalStateException: Type handler was null on parameter mapping for property ‘urlParams’. It was either not specified and/or could not be found for the javaType (com.alibaba.fastjson.JSONObject) : jdbcType (null) combination.

    2024年02月07日
    瀏覽(22)
  • Java后端返回的MySQL日期數(shù)據(jù)在前端格式錯誤的解決方法,區(qū)分jackson和fastjson

    Java后端返回的MySQL日期數(shù)據(jù)在前端格式錯誤的解決方法,區(qū)分jackson和fastjson

    在寫web項目的時候經常會遇到后端返回的MySQL 日期數(shù)據(jù)(date) 類型在前端顯示不正確的情況,有的時候會出現(xiàn)一串數(shù)字的時間戳,有的時候顯示為日期晚了一天。 這是因Json給前端返回數(shù)據(jù)的時候格式問題造成的 其實總結起來就是一句話在Model部分對于JavaBean定義參數(shù)類型的時

    2024年02月03日
    瀏覽(21)
  • 沒有fastjson,rust怎么方便的解析提取復雜json呢?

    在 Rust 中解析和提取復雜的 JSON 結構,你可以使用 serde_json 庫來處理。 serde_json 提供了一組功能強大的方法來解析和操作 JSON 數(shù)據(jù)。 下面是一個示例,展示了如何解析和提取復雜的 JSON 結構: 在這個示例中,我們首先將 JSON 字符串解析為 Value 類型的對象。然后,我們使用

    2024年02月14日
    瀏覽(17)
  • 后端java 如何返回給前端 JSON數(shù)據(jù)

    在上述代碼中,@ResponseBody注解用于將Java List對象轉換為JSON格式的數(shù)據(jù),并返回給前端。Spring會自動將List對象轉換為JSON格式的數(shù)組,其中每個元素都是一個JSON對象。在本例中,每個JSON對象都包含一個name屬性和一個age屬性。 Regenerate

    2024年02月15日
    瀏覽(22)
  • java解析json

    代碼: 步驟: ??? 定義一個JSON數(shù)組,用于將服務器返回的數(shù)據(jù)傳入到一個JSONArray對象中; ??? 然后循環(huán)遍歷這個JSONArray,從中取出每一個元素(JSONObject對象); ??? 調用getString()方法即可將數(shù)據(jù)取出。 代碼: 參考:java解析json_java 解析json_五寶茶四娃的博客-CSDN博客

    2024年02月10日
    瀏覽(18)
  • java對于JSON的解析

    1.1、JSONObject JSONObject是一種在Java中表示JSON對象的數(shù)據(jù)結構。它是一個無序的鍵值對集合,用花括號({})包圍,并且每個鍵值對由冒號(:)分隔。 在Java中使用JSONObject,通常需要使用JSON庫(如Jackson、Gson等)進行解析和操作。以下是一些常見的JSONObject操作: 創(chuàng)建JSONObject:

    2024年02月08日
    瀏覽(24)
  • java:解析json的幾種方式

    Java是一種流行的編程語言,它提供了很多實用的庫和工具,在處理JSON數(shù)據(jù)時也不例外。在本文中,我們將介紹Java中如何解析JSON數(shù)據(jù)。 JSON是一種輕量級的數(shù)據(jù)交換格式,它已經成為Web應用程序中最流行的數(shù)據(jù)格式之一。Java提供了許多庫來處理JSON數(shù)據(jù),包括Jackson、Gson和JS

    2024年02月03日
    瀏覽(18)
  • java解析多層嵌套json字符串

    在java 程序中,經常會涉及到各種變量值提取的問題,下面給出簡單的示例及說明: JSON實際上也是鍵值對(\\\"key\\\":\\\"value\\\"),key 必須是字符串,value 可以是合法的 JSON 數(shù)據(jù)類型(字符串, 數(shù)字, 對象, 數(shù)組, 布爾值或 null) value如果是字符串,用jsonobj.getString(\\\"key\\\")獲取 value如果是數(shù)

    2024年02月15日
    瀏覽(26)
  • 什么是Java中的JSON解析和生成?

    首先,我們來解釋一下JSON是什么。簡單來說,JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,易于閱讀和編寫,同時也易于解析和生成。在Java中,我們有很多種方式來實現(xiàn)JSON解析和生成。接下來,我們來看一下代碼示例吧! 首先,我們來看一下JSON解析。假設我

    2024年02月15日
    瀏覽(45)
  • Java常用的幾種JSON解析工具

    一、Gson:Google開源的JSON解析庫 1.添加依賴 示例代碼如下: 二、fastjson:阿里巴巴開源的JSON解析庫 1.添加依賴 JSON.toJSONString(obj):用于序列化對象,轉成json數(shù)據(jù)。 JSON.parseObject(obj,class): 用于反序列化對象,轉成數(shù)據(jù)對象。 JSON.parseArray():把 JSON 字符串轉成集合 示例代碼如下: 2.使

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包