Javaweb-案例练习-3-JSON对象

作者: 凯哥Java | 来源:发表于2019-07-30 09:18 被阅读0次

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中高级对象类型数据。

package com.kaigejava.json;

import org.junit.Test;

import com.kaigejava.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对象的简单使用就学习到这里。

本文来源:http://kaigejava.com/article/detail/523

凯哥公众号:凯哥Java(kaigejava)

相关文章

  • Javaweb-案例练习-3-JSON对象

    JSON对象和简单练习 前面一篇我们查找的图书的name都是通过逗号隔开,然后拼接成一个字符串传给浏览器。其实我们...

  • web_ajax综合练习

    Javaweb-综合练习 第1章项目介绍 后台管理p2p_management 实现登录,退出产品管理(产品添加,...

  • Javaweb-案例练习-1-验证邮箱是否存在

    如何验证邮箱是否存在 前面我们做了一个AJAX练习,就是验证用户名是否存在,现在回到我们的图书管理系统,来写一个如...

  • JavaWeb注册和登录在 (不用Spring之类的 框架)

    登录端代码 注册端 源码地址: https://github.com/FoxconnPeter/-JavaWeb-

  • Javaweb-案例练习-2-给搜索框添加提示

    给搜索框添加搜索提示功能 这篇来利用Ajax做一个给搜索框添加搜索提示的功能,这个我们在百度首页,搜索框随便输入一...

  • 练习一(2)

    【练习一】 —记录格式—, 一、所选观识的案例对象是: (请写出具体的事) 我给小学做讲座 二、观察的对象,所提供...

  • 重建我的价值大楼:第三天/2

    【练习一】—3 —记录格式— 一、所选观识的案例对象是: 我自己 做家庭主妇 二、观察的对象,所提供的是在满足什么...

  • 重建我的价值大楼:第二天

    【练习一】—1 —记录格式— 一、所选观识的案例对象是: 我自己 收纳整理 二、观察的对象,所提供的是在满足什么事...

  • 练习一6.3

    — 记录格式 1— 1.所选观识的案例对象是: 觉清的讲解 2.观察的对象,所提供的是在满足什么核心需求? ①练习...

  • Javaweb-案例练习-4-加入购物车的实现过程

    添加购物车功能实现 这篇来做一个练习,就是图书详情页面,点击购买按钮,这本书添加到购物中。购物车中主要思想就是采用...

网友评论

    本文标题:Javaweb-案例练习-3-JSON对象

    本文链接:https://www.haomeiwen.com/subject/nftgrctx.html