JsonObject 就是常說的 json。是一種重要的數據傳輸對象。其格式為{"key1":value1,"key2",value2....};key 必須是字元串。
因為ajax請求不刷新專頁面,但配合js可以實現屬局部刷新,因此json常常被用來作為非同步請求的返回對象使用。
通過response.getWriter()獲取PrintWriter pw,然後pw.print(json)。如果沒有設置response.setContentType("application/json; charset=utf-8"); 則需要自己再js中進行解析。
(1)json的定義和使用擴展閱讀
Java中交互方式分為同步和非同步兩種:
同步交互:指發送一個請求,需要等待返回,然後才能夠發送下一個請求,有個等待過程;
非同步交互:指發送一個請求,不需要等待返回,隨時可以再發送下一個請求,即不需要等待。
區別:一個需要等待,一個不需要等待,在部分情況下,項目開發中都會優先選擇不需要等待的非同步交互方式。
比如銀行的轉賬系統,對資料庫的保存操作等等,都會使用同步交互操作,其餘情況都優先使用非同步交互。
㈡ json-schema簡介與應用
了解json schema首先要知道什麼是json?
json 是 JavaScript Object Notation 的縮寫,它是一種簡化的數據交換格式,是目前互聯網服務間進行數據交換最常見的一種交換格式,具有簡潔、可讀性好等特點。
在json中常見的數據類型主要包括
一個示例json格式比如:
如前文所述,json是目前應用非常廣泛的數據交換格式。既然是用於數據交換的格式,那麼就存在數據交換的雙方。如何約定或校驗對方的數據格式是符合要求的,就成了服務交互需要解決的一個問題。所以Json Schema就是用來定義json數據約束的一個標准。根據這個約定模式,交換數據的雙方可以理解json數據的要求和約束,也可以據此對數據進行驗證,保證數據交換的正確性。
目前最新的Json-schema版本是draft 7,發布於2018-03-19。下面我們就以官網的一個實例來看看Json-schema是如何進行數據約束以及其應用
如下是一個schema實例:
分析說明:
說明當前使用的schema版本,可以不包含
當前schema的唯一id標識,一般指向一個自主域名。方便後續引用,可以不包含
當前schema的標題,簡要描述信息,可不包含
詳細描述信息,可不包含
約束對象是object,也就是在 { } 中的數據
object中具體屬性的約束,description是描述信息,不產生具體約束。
type約束 proctid 屬性類型為整型
約束 proctName 屬性類型為字元型
約束 price 屬性類型為數字型,可以是整型或浮點型。
exclusiveMinimum 約束該數字>0(不包含0)
約束 tag 屬性是array數組。items是數組項約束,這里約束數組項均為字元型
minItems 數組至少包含1項。
uniqueItems 約束數組中每項不得重復
約束 dimensions 嵌套對象,其中length,width,height均為數字類型
且這三個欄位在dimensions對象中必須包含
當前數據對象必須包含proctId,proctName,price三個欄位
以上是對Json-Schema的簡要說明,詳細介紹後續再奉上
㈢ JSON的定義
JSON是一種文本格式結構化數據的序列化。
JSON有四種原始類型:
兩種結構化類型:
字元串(string)是以0個或更多的Unicode字元組成的序列。
對象(object)是以鍵值對(name/value)組成的無序集合,鍵名(name)必須是字元串類型,鍵值必須是字元串(string)、數值(number)、布爾(boolean)、空(null)、對象(object)或數組(array)中的一種。
數組(array)是0個或多個值(value)的有序集合。
JSON的設計目標是讓JSON成為最小的,便攜的,文本的,JavaScript的子集。
JSON 內容類型有如下幾種:
根據 RFC 4627 文件,
The MIME media type for JSON text is application/json.
Type name: application
Subtype name: json
所以認為:The MIME media type for JSON text is application/json. The default encoding is UTF-8。
㈣ java開發,json是干什麼的
對 和XML是沒什抄么區別 所表達的意思都是一樣的 但 在與瀏覽器的交互中通常都用JSON 當然 也可以用XML 不過JS對JSON的支持好很多 (JSON就是根據JS來的) 並且 JS字元串比XML文檔顯得干凈些
這個大都是愛好問題 功能一樣 看你喜歡用哪個了
㈤ 什麼是JSON字元串
簡單地說[2] ,JSON 可以將 JavaScript 對象中表示的一組數據轉換為字元串,然後就可以在函數之間輕松地傳遞這個字元串,或者在非同步應用程序中將字元串從 Web 客戶機傳遞給伺服器端程序。這個字元串看起來有點兒古怪,但是JavaScript很容易解釋它,而且 JSON 可以表示比"名稱 / 值對"更復雜的結構。例如,可以表示數組和復雜的對象,而不僅僅是鍵和值的簡單列表。
名稱 / 值對
按照最簡單的形式,可以用下面這樣的 JSON 表示"名稱 / 值對":
{"firstName":"Brett"}
這個示例非常基本,而且實際上比等效的純文本"名稱 / 值對"佔用更多的空間:
firstName=Brett
但是,當將多個"名稱 / 值對"串在一起時,JSON 就會體現出它的價值了。首先,可以創建包含多個"名稱 / 值對"的 記錄,比如:
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}
從語法方面來看,這與"名稱 / 值對"相比並沒有很大的優勢,但是在這種情況下 JSON 更容易使用,而且可讀性更好。例如,它明確地表示以上三個值都是同一記錄的一部分;花括弧使這些值有了某種聯系。
表示數組
當需要表示一組值時,JSON 不但能夠提高可讀性,而且可以減少復雜性。例如,假設您希望表示一個人名列表。在XML中,需要許多開始標記和結束標記;如果使用典型的名稱 / 值對(就像在本系列前面文章中看到的那種名稱 / 值對),那麼必須建立一種專有的數據格式,或者將鍵名稱修改為 person1-firstName這樣的形式。
如果使用 JSON,就只需將多個帶花括弧的記錄分組在一起:
{
"people":[
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
]
}
這不難理解。在這個示例中,只有一個名為 people的變數,值是包含三個條目的數組,每個條目是一個人的記錄,其中包含名、姓和電子郵件地址。上面的示例演示如何用括弧將記錄組合成一個值。當然,可以使用相同的語法表示多個值(每個值包含多個記錄):
{
"programmers": [{
"firstName": "Brett",
"lastName": "McLaughlin",
"email": "aaaa"
}, {
"firstName": "Jason",
"lastName": "Hunter",
"email": "bbbb"
}, {
"firstName": "Elliotte",
"lastName": "Harold",
"email": "cccc"
}],
"authors": [{
"firstName": "Isaac",
"lastName": "Asimov",
"genre": "sciencefiction"
}, {
"firstName": "Tad",
"lastName": "Williams",
"genre": "fantasy"
}, {
"firstName": "Frank",
"lastName": "Peretti",
"genre": "christianfiction"
}],
"musicians": [{
"firstName": "Eric",
"lastName": "Clapton",
"instrument": "guitar"
}, {
"firstName": "Sergei",
"lastName": "Rachmaninoff",
"instrument": "piano"
}]
}
這里最值得注意的是,能夠表示多個值,每個值進而包含多個值。但是還應該注意,在不同的主條目(programmers、authors 和 musicians)之間,記錄中實際的名稱 / 值對可以不一樣。JSON 是完全動態的,允許在 JSON 結構的中間改變表示數據的方式。
在處理 JSON 格式的數據時,沒有需要遵守的預定義的約束。所以,在同樣的數據結構中,可以改變表示數據的方式,甚至可以以不同方式表示同一事物。