JSON對象和簡單練習

2020-12-05 凱哥Java

JSON對象和簡單練習

前面一篇我們查找的圖書的name都是通過逗號隔開,然後拼接成一個字符串傳給瀏覽器。其實我們可以把多個圖書名稱用數組格式傳給瀏覽器,前端JS代碼通過遍歷這個數組,也是可以拿到這些name數據。現在,我們一般不用數組,而是用JSON這格式。本篇就來看看JSON是如何解決上一篇字符串傳給瀏覽器的代碼,以及JSON對象中常見的操作。

1環境搭建

在使用JSON對象之前,我們需要提前下載幾個jar包,拷貝到java web工程下的\WEB-INF\lib\路徑下

以下這幾個jar包可以到maven倉庫下載,我這裡也貼出來了這幾個下載地址。

commons-lang-xx.jar

commons-collections-3.2.2.jar

ezmorph-1.0.6.jar

json-lib-2.4-jdk15.jar

2把字符串改成JSON

上一篇我們在SearchBookAJAXServlet.java中是用字符串拼接,這次我們這裡改成JSON。

然後找打menu_search.jsp,更改下面紅圈這行代碼。

這個時候ss直接接收的就是一個數組對象,這裡是JSONArray對象。其中eval函數的作用就是讓後面這個數組對象作為一個完整表達式存在,不然會被切割亂七八糟。保存代碼之後,部署tomcat,然後重啟,瀏覽器訪問

在搜索框輸入一個j或者java,看看控制臺列印內容。

我這頁面查詢了兩次,所以輸出兩次。

所以,使用JSON對象一句話就搞定了,比前面字符串拼接簡單多了。下面,來看看JSON的常見幾個操作。

3 JSON對象常見操作

這裡,還是在這個圖書項目,新建一個json的包,然後新建一個JSONTest.java類

我們來寫一個測試用例,作用就是把JavaBean對象轉成JSON格式的Sting.

使用場景1:使用JSONObject對象封裝java中高級對象類型數據。

import org.junit.Test;

import com.anthony.domain.Book;

import net.sf.json.JSONObject;

public class JsonTest {

@Test

public void test1() {

Book b = new Book();

b.setId("12345");

b.setName("上下五千年");

b.setPrice(58);

String s = JSONObject.fromObject(b).toString();

System.out.println(s);

}

}

運行這個單元測試,輸出如下內容

{"category":"","description":"","id":"12345","name":"上下五千年","pnum":0,"price":58}

看看這個結果輸出,我們book只設置了三個屬性,沒有設置的分類和描述,默認是空字符串這個值,商品數量由於是int類型,默認就是0.

使用場景2:使用JSONArray封裝List集合數據

@Test

public void test2() {

List<Book> list = new ArrayList<Book>();

Book b1 = new Book();

b1.setId("1001");

b1.setName("西遊記");

b1.setPrice(58);

Book b2 = new Book();

b2.setId("1002");

b2.setName("三國演義");

b2.setPrice(68);

Book b3 = new Book();

b3.setId("1003");

b3.setName("水滸傳");

b3.setPrice(48);

list.add(b1);

list.add(b2);

list.add(b3);

String ss = JSONArray.fromObject(list).toString();

System.out.println(ss);

}

運行得到輸出:

[{"category":"","description":"","id":"1001","name":"西遊記","pnum":0,"price":58},{"category":"","description":"","id":"1002","name":"三國演義","pnum":0,"price":68},{"category":"","description":"","id":"1003","name":"水滸傳","pnum":0,"price":48}]

輸出是一個數組,裡面每一個元素都是一個JSON格式的對象。

使用場景3:使用JsonConfig對象過濾數據

有時候,我們JSON數據並不想要其中一些欄位,例如我們查詢圖書的結果,正常返回都是圖書的id,圖書name,圖書pnum,圖書price,圖書catogry,圖書description。

但是,有時候我們就只想要圖書name和圖書price返回,其他欄位不需要。這個時候就可以使用JsonConfig對象來過濾一些欄位。

@Test

public void test3() throws SQLException {

QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());

List<Book> list = qr.query("select * from book", new BeanListHandler<Book>(Book.class));

//過濾掉 圖書數量,描述和id,分類信息,只要價格和圖書名稱

JsonConfig jc = new JsonConfig();

// 過濾,不要這些欄位信息

jc.setExcludes(new String[] {"pnum", "id", "category", "description"});

String ss = JSONArray.fromObject(list, jc).toString();

System.out.println(ss);

}

運行得到:

[{"name":"Java編程思想","price":78.9},{"name":"python入門寶典","price":59},{"name":"JavaScript程序設計","price":69},{"name":"來自底層的奮鬥","price":39},{"name":"紅樓夢","price":59},{"name":"厚黑學","price":89},{"name":"西遊記","price":34.9},{"name":"Groovy程序設計","price":49.89}]

JSON對象的簡單使用就學習到這裡。

相關焦點

  • 程式設計師:JSON、JSONObject 與 JSONArray 簡單講解
    清晰的層次結構易於人閱讀和編寫,同時也易於機器解析和生成有效的提升網絡傳輸效率支持多種語言,很多流行的語言都對 JSON 格式有著很友好的支持JSON 對象這就是一個平常使用的 JSON 對象,特徵就是多個屬性是被 {} 括起來的{"area": "山東菏澤","name": "馬馬馬馬馬百萬
  • rpc、json Rpc和http區別
    帶索引數組參數的rpc調用--> {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}<-- {"jsonrpc": "2.0", "result": 19, "id": 1} 2.
  • wind-core 4.0.4 發布,支持將對象映射為 JSON 字符串
    新增:添加對象到JSON轉換器,現在對象/集合對象 可以直接保存為JSON字符串了 @TableColumn(columnDefinition = "text", comment = "對象集合轉存json,可指定集合類型")@TypeHandler(ObjectCollectionToJsonTypeHandler.class)private List<Type
  • c 怎麼發送json數據 - CSDN
    其實解析過程很簡單, 而且只用了強大的ArduinoJson庫的一小部分功能具體操作請參考本文第八節下面是 ArduinoJSON庫的核心內容:一.V6版本函數庫結構可以看出,方法主要分為四大類:JsonDocument相關,這是整個json庫的入口,它負責高效管理內存以及調用json解析器;JsonObject相關;JsonArray相關;
  • Springmvc框架對json的支持 Java程式設計師必看
    路徑當做請求處理了,於是我們必須不讓他處理這個請求,讓它對靜態資源放行需要進行如下配置在web.xml中我們添加幾條通過名為default的servlet處理的url-pattern,分別對應js和css文件。
  • Golang 語言使用標準庫 net/rpc/jsonrpc 包跨語言遠程調用
    其他方面和 net/rpc 一樣,可以通過閱讀「Go 使用標準庫 net/rpc 包」了解相關內容。03net/rpc/jsonrpc 怎麼使用?通過一個簡單的示例,我們演示 Go 語言標準庫 net/rpc/jsonrpc 的使用方法。
  • 使用Java讀取Json數據和ArrayList刪除全部數據的方法
    如何使用Java讀取Json文件裡邊的數據,Json文件的格式是{name:"龜哥「},所以龜哥的思路是先讀取json文件,然後拿到name對應的屬性值,把讀取到的數據保存到集合中。讀取json文件使用InputStreamReader讀取json文件,將讀取的json文件數據保存到StringBufferm,通過toString方法將文件數據轉化成字符串的形式,然後new 一個JsonObject對象j,將字符串傳入到對象j的構造方法裡邊,比如JsonObject j=new JsonObject(字符串s);通過j.get("name")方法拿到了name的屬性值」龜哥「,
  • 乾貨|如何利用Python處理JSON格式的數據,建議收藏!
    經微信公眾號授權轉載,如需轉載與原文作者聯繫JSON數據格式在我們的日常工作中經常會接觸到,無論是做爬蟲開發還是一般的數據分析處理,本文小編就來分享一下當數據接口是JSON格式時,如何進行數據處理進行詳細的介紹,內容分布如下什麼是JSONJSON模塊的使用方法什麼是JSONJSON(JavaScript Object Notation, JS對象簡譜
  • 就能學會以太坊 JSON API 基礎知識!
    "headers = {'Content-type': 'application/json'}為了簡單起見,我們使用Infura節點連接到Ethereum Ropsten Testnet。我們可以簡單地做以下操作:# Prepare the data we will senddata = {"jsonrpc": "2.0", "method": "eth_gasPrice", "params": [], "id":1}response = session.post(url, json=data, headers=headers
  • 用Java創建一個有序的JSONObject
    HashMap允許快速檢索鍵值對,使其成為JSON對象的理想數據結構。但是,正如我們從數據結構和算法課程中可能記得的那樣,默認情況下,HashMaps是無序的,這意味著您的數據是隨機分布在內存中的。這意味著,如果我們想在日誌,瀏覽器或電子郵件中列印出JSONObject,則訂單可能看起來不規則。
  • 用Scala實現簡單的Web和API伺服器
    作者 | Haoyi譯者 | 彎月,責編 | 劉靜以下為譯文:Web和API伺服器是網際網路系統的骨幹,它們為計算機通過網絡交互提供了基本的界面,特別是在不同公司和組織之間。這篇指南將向你介紹如何利用Scala簡單的HTTP伺服器,來提供Web內容和API。
  • MySQL全文索引、聯合索引、like查詢、json查詢速度大比拼
    SELECTCOUNT(*) FROM tmp_test_course WHERE`type`=5AND del=2AND is_leaf=1我們在限定為上面類型的同時,還得包含下面任意一個編碼(也就是OR查詢)下面分別列出4種方式查詢outline欄位,給出相應的查詢時間和掃描行數
  • (建議收藏)|Spring Boot集成JSON Web Token(JWT)
    ## 1.3 JWT1.3.1 簡介JSON Web Token(JWT)是為了在網絡應用環境間傳遞聲明而執行的一種基於JSON的開放標準((RFC 7519),它定義了一種緊湊(Compact)且自包含(Self-contained)的方式,用於在各方之間以JSON對象安全傳輸信息。 這些信息可以通過數字籤名進行驗證和信任。
  • 「每日github」6:restful接口mock工具:json-server|K8s上榜等
    宣傳的目標是使react應用更簡單。2,moment / momentmoment.js是一個JavaScript的時間日期處理類庫。這個庫還是相當好用的,各種時間日期顯示操作功能齊全,且有多語言支持。這個庫建議大家收藏,你必然會用到的,到時候不需要自己重複造輪子。這也是我寫這一些列文章的初衷,避免重複造輪子。
  • Java多態,對象轉型,和簡單工廠模式 希望對您有幫助!
    可以理解為同一個引用對象的不同表現形態,即將父類的引用指向子類的對象。這是比較官方的書面解釋,大家可以通過自己的理解轉化成自己的話。知道,了解一下就行。大家還需要知道的是:多態是java面向對象的三大特徵之一。而java的多態分為兩種:靜態多態和動態多態。靜態多態的小名叫編譯時多態,通過方法的重載來實現。動態多態是運行時的多態形式,通過對象的多態性質來實現。
  • 一分鐘簡單了解JSON Web Token
    JSON Web Token(JWT)是一個開放的標準(RFC 7519),它定義了一個緊湊且自包含的方式,用於在各方之間作為 JSON 對象安全地傳輸信息。由於此信息是經過數字籤名的,因此可以被驗證和信任。今天我們就來簡單的認識一下 JSON Web Token。
  • 嘿,你對象在這兒——Java 面向對象編程:類和對象
    等到我們學面向對象的時候不得不去了解一下什麼是類,什麼是對象,他倆是啥關係。關於面向對象,網上那個寫得很好的例子已經被我抄到C語言與Java的區別那篇了,感興趣的小夥伴可以點左上角的菜單去查看。那麼類和對象到底是什麼呢?類就是有某些共同特徵的實體的集合;對象就是類的實例,一個對象當然就是一個類的實例。
  • 吹好葫蘆絲,最大的捷徑就是重複練習和基本功練習
    經常做做手指拉伸的動作,彈指動作,不要太用力,簡單的拉伸也許可以讓你的手指更靈活!葫蘆絲的基本功有三方面的練習,一是氣息的聯繫,二是指法的練習,三是吐音的練習,三者相互獨立又密不可分,吹奏任何一首曲子,無論是練習曲還是樂曲,三者的訓練都缺一不可。