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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java ajax解析json数据_利用AJAX向后台servlet传JSON数据,后台利用fastjson进行解析

發布時間:2024/1/23 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java ajax解析json数据_利用AJAX向后台servlet传JSON数据,后台利用fastjson进行解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,json的構建

JSON的格式分為兩種,第一種類似于JavaScript中的對象(這里需要注意的是JS中的對象與java中的對象概念是不一樣的,js可以在對象中定義屬性,方法等,類似于java中的類,但是java中的對象實際上是類實例化的結果,是一個類的實例);第二種類似對象數組格式。

下面創建js對象:兩個對象obj1和obj2,一個包含兩個對象的數組;

var obj1 = {

name: "小明",

age: 25

}

var obj2 = {

name = "小王",

age = 19

}

var arr = [obj1,obj2];

二、JSON的發送

假如我們只需要發送某個對象的name和age值到后臺,我們只需要發送obj1或者obj2就行。下面是JS代碼

$.ajax({

async: true,

url: "parseJson.do",

data: JSON.stringify(obj1),

processData: false,

success: function(data){

//some code

}

})

三、后臺servlet接收

是不是很簡單,下面創建一個servlet來接收前臺發過來的數據

//省略import各種包

@WebServlet("/parseJson.do")

public class ParseJsonServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//先創建字符流來讀取json

BufferedReader reader = new BufferedReader(req.getReader());

String json = reader.readLine();

//這里用fastjson來解析

JSONObject jo = JSON.parseObject(json);

//獲取name和age對應的值

String name = jo.getString("name");

int age = jo.getInteger("age");

System.out.println("name: "+name+";"+"age: "+age);

}

}

運行結果:

于是后臺順利獲得前臺傳來的值;

四、發送數組格式的JSON如何解析呢?

首先構建數組格式的json:就是創建對象數組,前臺代碼

$.ajax({

async: true,

url: "parseJson.do",//URL沒有變意味著我用同一個servlet哦,演示本例的時候吧之前的都注釋掉了

data: JSON.stringify(arr),

processData: false,

success: function(data){

//some code

}

})

后臺還是用servlet

//省略import各種包

@WebServlet("/parseJson.do")

public class ParseJsonServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//先創建字符流來讀取json

BufferedReader reader = new BufferedReader(req.getReader());

String json = reader.readLine();

//這里用fastjson來解析數組,我并不知道解析的數據是哪個對象,所以用了object的集合

List list = JSONArray.parseArray(json);

//輸出

System.out.println(list.get(0));

System.out.println(list.get(1));

}

}

輸出結果:

這不是輸出的兩行“JSON”嗎?我如何獲取name和age的值呢?

方法1:創建包含name和age成員變量的實體類,利用get方法不就能獲取值了!

public class Person {

private String name;

private int age;

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;

}

}

接著我們修改servlet:

//省略import各種包

@WebServlet("/parseJson.do")

public class ParseJsonServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//先創建字符流來讀取json

BufferedReader reader = new BufferedReader(req.getReader());

String json = reader.readLine();

//這里用fastjson來解析數組,我并不知道解析的數據是哪個對象,所以用了object的集合

//List list = JSONArray.parseArray(json);

//利用JSONArray.parseArray()方法的重載

List list = JSONArray.parseArray(json,Person.class);

System.out.print("obj1的姓名" + list.get(0).getName());

System.out.print("obj2的年齡" + list.get(1).getAge());

}

}

輸出結果:

這樣順利的獲取name和age的值

方法2:我不想創建實體類,我對得到的類似于"JSON"的東西繼續進行解析

還是修改servlet:

//省略import各種包

@WebServlet("/parseJson.do")

public class ParseJsonServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//先創建字符流來讀取json

BufferedReader reader = new BufferedReader(req.getReader());

String json = reader.readLine();

//這里用fastjson來解析數組,我并不知道解析的數據是哪個對象,所以用了object的集合

//List list = JSONArray.parseArray(json);

//解析第一個'JSON'

JSONObject jo1 = JSON.parseObject(String.valueOf(list.get(0)));

//獲取obj1的name

String name1 ?= jo1.getString("name");

//獲取obj2的age

JSONObject jo2 = JSON.parseObject(String.valueOf(list.get(1)));

int age2 ?= jo2.getInteger("age");

System.out.println("obj1的name: "+name1+"obj2的age"+age2);

}

}

運行的結果:

同樣成功獲得前臺數據

總結

以上是生活随笔為你收集整理的java ajax解析json数据_利用AJAX向后台servlet传JSON数据,后台利用fastjson进行解析的全部內容,希望文章能夠幫你解決所遇到的問題。

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