一,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进行解析相关推荐

  1. python代码html显示数据_通过AJAX success方法以html格式显示数据

    我正在编写下面的代码,用json格式从数据库返回的html表中显示数据success : function(data){ alert("declaring variable"); ...

  2. java集合转js数值_前端js调用接口转换Map数组数据

    返回Map数据 后端接口返回数据格式 { "code": 1, "msg": "操作成功!", "count": 0, ...

  3. java怎么制作放置游戏_从零开始实现放置游戏(八)——实现后台管理系统(6)代码重构...

    前几张,我们主要实现了升级经验.人物等级属性.地图.地图怪物,这四种配置的增删查改以及Excel导入功能.我们主要以地图怪物为例,因此在文章末尾提供的源代码中只实现了地图怪物这部分的逻辑功能. 如果你 ...

  4. 爬动漫网站数据_通过这三种动漫爱上数据科学和技术

    爬动漫网站数据 Yes, it might seem weird to mention anime, data science, and technology in the same breath. ...

  5. mysql如何快速插入一千万条数据_如何快速安全的插入千万条数据?

    最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文件有千万条,同时每条记录大概 ...

  6. python爬取所有数据_入门用Python进行Web爬取数据:为数据科学项目提取数据的有效方法...

    作者|LAKSHAY ARORA 编译|Flin 来源|analyticsvidhya 总览 Web抓取是一种从网站提取数据的高效方法(取决于网站的规定) 了解如何使用流行的BeautifulSoup ...

  7. 如何用python爬取数据_入门用Python进行Web爬取数据:为数据科学项目提取数据的有效方法...

    作者|LAKSHAY ARORA 编译|Flin 来源|analyticsvidhya 总览 Web抓取是一种从网站提取数据的高效方法(取决于网站的规定) 了解如何使用流行的BeautifulSoup ...

  8. node爬取app数据_使用node.js如何爬取网站数据

    数据库又不会弄,只能扒扒别人的数据了. 搭建环境: (1).创建一个文件夹,进入并初始化一个package.json文件. npm init -y (2).安装相关依赖: npm install -- ...

  9. 查询时拼接两列数据_如何用VBA代码查询两列数据差异?

    爱就一个字,我只说一次-- 北京市第三交通委提醒您:代码千万条,注释第一条,命名不规范,修订两行泪-- 咳,给大家拜晚年了,再提前祝大家元宵快乐-- 我们今天和大家分享的内容是如何用VBA代码查询两列 ...

最新文章

  1. Site Group Level Price Maintenance in IS Retail
  2. matlab练习程序(LMS)
  3. 打印 SpringMVC中所有的接口URL
  4. java委_java双亲委派机制及作用
  5. C++_智能指针shared_ptr、unique_ptr、weak_ptr、auto_ptr总结
  6. python设置窗体标题_Python3 tkinter基础 TK title 设置窗体的标题
  7. oracle 授权所有语句,oracle grant 授权语句
  8. ubuntu使用双模机械师K7机械键盘遇到的问题
  9. AI后门检测论文翻译:Universal Litmus Patterns: Revealing Backdoor Attacks in CNNs
  10. Windows搭建幼麟麻将运行环境
  11. esp-idf手动设置系统时间
  12. CAN总线电容过大的有效解决方法
  13. 红黑树的历史和由来。
  14. 统计手机号耗费的总上行流量、下行流量、总流量(序列化)
  15. 【职场】关于公司各职位的英文缩写!
  16. Air Quality Index,简称AQI
  17. nuScenes自动驾驶数据集:格式转换,模型的数据加载(二)
  18. 如何给word 文章的每段段尾添加 脚注
  19. EasyPlayerPro安卓流媒体播放器实现Android H.265硬解码流程
  20. JSP PreparedStatement.setDate

热门文章

  1. 【JavaScript】判断一个字符串是否是数值 / 判断是否包含字母(附常用正则表达式)
  2. JVM系列之:JIT中的Virtual Call
  3. SpringBoot @ConfigurationProperties详解
  4. Libra教程之:Libra协议的关键概念
  5. 基于python技术的自动化运维是干嘛的_《Python自动化运维 技术与最佳实践》.pdf...
  6. JVM运行时数据区和各个区域的作用
  7. maven下载包慢解决
  8. MySQL中count(1),count(*),count(某字段)等用法联系和区别
  9. python安装后怎样配解释器_python解释器安装教程以及环境变量的配置
  10. 计算机mooc操作测试视频,计算机基础课MOOC视频的制作方法.doc