前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Javaweb-案例练习-3-JSON对象

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

原创
作者头像
凯哥Java
修改2019-07-30 10:35:33
7920
修改2019-07-30 10:35:33
举报
文章被收录于专栏:凯哥Java

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)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档