日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java筑基期(10)----ajaxjson(2)

發布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java筑基期(10)----ajaxjson(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JSON:

? ? 1. 概念: JavaScript Object Notation?? ??? ?JavaScript對象表示法
?? ?Person p = new Person();
?? ?p.setName("張三");
?? ?p.setAge(23);
?? ?p.setGender("男");

?? ?var p = {"name":"張三","age":23,"gender":"男"};

?? ?* json現在多用于存儲和交換文本信息的語法
?? ?* 進行數據的傳輸

?? ?* JSON 比 XML 更小、更快,更易解析
? ?
2. 語法:
?? ?1. 基本規則
?? ?* 數據在名稱/值對中:json數據是由鍵值對構成的
?? ??? ?* 鍵用引號(單雙都行)引起來,也可以不使用引號
?? ??? ?* 值得取值類型:
?? ??? ??? ?1. 數字(整數或浮點數)
?? ??? ??? ?2. 字符串(在雙引號中)
?? ??? ??? ?3. 邏輯值(true 或 false)
?? ??? ??? ?4. 數組(在方括號中)?? ?{"persons":[{},{}]}
?? ??? ??? ?5. 對象(在花括號中) {"address":{"province":"陜西"....}}
?? ??? ??? ?6. null
?? ?* 數據由逗號分隔:多個鍵值對由逗號分隔
?? ?* 花括號保存對象:使用{}定義json 格式
?? ?* 方括號保存數組:[]

?? ?2. 獲取數據:
?? ??? ?1. json對象.鍵名
?? ??? ?2. json對象["鍵名"]
?? ??? ?3. 數組對象[索引]
?? ??? ?4. 遍歷

//1.定義基本格式var person = {"name": "張三", age: 23, 'gender': true};var ps = [{"name": "張三", "age": 23, "gender": true},{"name": "李四", "age": 24, "gender": true},{"name": "王五", "age": 25, "gender": false}];//獲取person對象中所有的鍵和值//for in 循環/* for(var key in person){//這樣的方式獲取不行。因為相當于 person."name"//alert(key + ":" + person.key);alert(key+":"+person[key]);}*///獲取ps中的所有值for (var i = 0; i < ps.length; i++) {var p = ps[i];for(var key in p){alert(key+":"+p[key]);}}

3. JSON數據和Java對象的相互轉換

* JSON解析器:
?? ?* 常見的解析器:Jsonlib,Gson,fastjson,jackson

1. JSON轉為Java對象
?? ?1. 導入jackson的相關jar包
?? ?2. 創建Jackson核心對象 ObjectMapper
?? ?3. 調用ObjectMapper的相關方法進行轉換
?? ??? ?1. readValue(json字符串數據,Class)
2. Java對象轉換JSON
?? ?1. 使用步驟:
?? ??? ?1. 導入jackson的相關jar包
?? ??? ?2. 創建Jackson核心對象 ObjectMapper
?? ??? ?3. 調用ObjectMapper的相關方法進行轉換
?? ??? ??? ?1. 轉換方法:
?? ??? ??? ??? ?* writeValue(參數1,obj):
?? ??? ??? ??? ??? ?參數1:
?? ??? ??? ??? ??? ??? ?File:將obj對象轉換為JSON字符串,并保存到指定的文件中
?? ??? ??? ??? ??? ??? ?Writer:將obj對象轉換為JSON字符串,并將json數據填充到字符輸出流中
?? ??? ??? ??? ??? ??? ?OutputStream:將obj對象轉換為JSON字符串,并將json數據填充到字節輸出流中

?? ??? ??? ??? ?* writeValueAsString(obj):將對象轉為json字符串

?? ??? ??? ?2. 注解:
?? ??? ??? ??? ?1. @JsonIgnore:排除屬性。
?? ??? ??? ??? ?2. @JsonFormat:屬性值得格式化
?? ??? ??? ??? ??? ?* @JsonFormat(pattern = "yyyy-MM-dd")

?? ??? ??? ?3. 復雜java對象轉換
?? ??? ??? ??? ?1. List:數組
?? ??? ??? ??? ?2. Map:對象格式一致

import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.Test;import java.io.FileWriter; import java.util.*;public class JacksonTest {//Java對象轉為JSON字符串@Testpublic void test1() throws Exception {//1.創建Person對象Person p = new Person();p.setName("張三");p.setAge(23);p.setGender("男");//2.創建Jackson的核心對象 ObjectMapperObjectMapper mapper = new ObjectMapper();//3.轉換/*轉換方法:writeValue(參數1,obj):參數1:File:將obj對象轉換為JSON字符串,并保存到指定的文件中Writer:將obj對象轉換為JSON字符串,并將json數據填充到字符輸出流中OutputStream:將obj對象轉換為JSON字符串,并將json數據填充到字節輸出流中writeValueAsString(obj):將對象轉為json字符串*/String json = mapper.writeValueAsString(p);//{"name":"張三","age":23,"gender":"男"}//System.out.println(json);//{"name":"張三","age":23,"gender":"男"}//writeValue,將數據寫到d://a.txt文件中//mapper.writeValue(new File("d://a.txt"),p);//writeValue.將數據關聯到Writer中mapper.writeValue(new FileWriter("d://b.txt"),p);}@Testpublic void test2() throws Exception {//1.創建Person對象Person p = new Person();p.setName("張三");p.setAge(23);p.setGender("男");p.setBirthday(new Date());//2.轉換ObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(p);System.out.println(json);//{"name":"張三","age":23,"gender":"男","birthday":1530958029263}//{"name":"張三","age":23,"gender":"男","birthday":"2018-07-07"}}@Testpublic void test3() throws Exception {//1.創建Person對象Person p = new Person();p.setName("張三");p.setAge(23);p.setGender("男");p.setBirthday(new Date());Person p1 = new Person();p1.setName("張三");p1.setAge(23);p1.setGender("男");p1.setBirthday(new Date());Person p2 = new Person();p2.setName("張三");p2.setAge(23);p2.setGender("男");p2.setBirthday(new Date());//創建List集合List<Person> ps = new ArrayList<Person>();ps.add(p);ps.add(p1);ps.add(p2);//2.轉換ObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(ps);// [{},{},{}]//[{"name":"張三","age":23,"gender":"男","birthday":"2018-07-07"},{"name":"張三","age":23,"gender":"男","birthday":"2018-07-07"},{"name":"張三","age":23,"gender":"男","birthday":"2018-07-07"}]System.out.println(json);}@Testpublic void test4() throws Exception {//1.創建map對象Map<String,Object> map = new HashMap<String,Object>();map.put("name","張三");map.put("age",23);map.put("gender","男");//2.轉換ObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(map);//{"name":"張三","age":23,"gender":"男"}System.out.println(json);//{"gender":"男","name":"張三","age":23}}//演示 JSON字符串轉為Java對象@Testpublic void test5() throws Exception {//1.初始化JSON字符串String json = "{\"gender\":\"男\",\"name\":\"張三\",\"age\":23}";//2.創建ObjectMapper對象ObjectMapper mapper = new ObjectMapper();//3.轉換為Java對象 Person對象Person person = mapper.readValue(json, Person.class);System.out.println(person);}}

?案例:

* 校驗用戶名是否存在
?? ?1. 服務器響應的數據,在客戶端使用時,要想當做json數據格式使用。有兩種解決方案:
?? ??? ?1. $.get(type):將最后一個參數type指定為"json"
?? ??? ?2. 在服務器端設置MIME類型
?? ??? ??? ?response.setContentType("application/json;charset=utf-8");

FinfUserServlet

import com.fasterxml.jackson.databind.ObjectMapper;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.Map;@WebServlet("/findUserServlet") public class FindUserServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.獲取用戶名String username = request.getParameter("username");//2.調用service層判斷用戶名是否存在//期望服務器響應回的數據格式:{"userExsit":true,"msg":"此用戶名太受歡迎,請更換一個"}// {"userExsit":false,"msg":"用戶名可用"}//設置響應的數據格式為jsonresponse.setContentType("application/json;charset=utf-8");Map<String,Object> map = new HashMap<String,Object>();if("tom".equals(username)){//存在map.put("userExsit",true);map.put("msg","此用戶名太受歡迎,請更換一個");}else{//不存在map.put("userExsit",false);map.put("msg","用戶名可用");}//將map轉為json,并且傳遞給客戶端//將map轉為jsonObjectMapper mapper = new ObjectMapper();//并且傳遞給客戶端mapper.writeValue(response.getWriter(),map);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);} }

register.html

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>注冊頁面</title><script src="js/jquery-3.3.1.min.js"></script><script>//在頁面加載完成后$(function () {//給username綁定blur事件$("#username").blur(function () {//獲取username文本輸入框的值var username = $(this).val();//發送ajax請求//期望服務器響應回的數據格式:{"userExsit":true,"msg":"此用戶名太受歡迎,請更換一個"}// {"userExsit":false,"msg":"用戶名可用"}$.get("findUserServlet",{username:username},function (data) {//判斷userExsit鍵的值是否是true// alert(data);var span = $("#s_username");if(data.userExsit){//用戶名存在span.css("color","red");span.html(data.msg);}else{//用戶名不存在span.css("color","green");span.html(data.msg);}}/*,"json"*/);}); });</script> </head> <body><form><input type="text" id="username" name="username" placeholder="請輸入用戶名"><span id="s_username"></span><br><input type="password" name="password" placeholder="請輸入密碼"><br><input type="submit" value="注冊"><br></form></body> </html>

?

總結

以上是生活随笔為你收集整理的java筑基期(10)----ajaxjson(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。