栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

转JSON数据的基本使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

转JSON数据的基本使用

目录

一、JSON概念

二、常用类型

三、基本使用

 四、@JsonIgnore&@JsonIgnoreProperties()

五、 解决JSON日期格式化问题:@JsonFormat


一、JSON概念

        JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率

二、常用类型

        任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。

        对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。

        数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。

三、基本使用

        3.1 添加jackson相关依赖


    com.fasterxml.jackson.core
    jackson-databind
    2.9.3

        3.2 在spring-mvc.xml文件添加如下内容


        
            
                
            
        
   
   
        
        
            
                text/html;charset=UTF-8
                text/json;charset=UTF-8
                application/json;charset=UTF-8
            
        


        3.3 注解介绍:
                    注解-@ResponseBody:将Controller方法的返回结果直接写入到 response对象的 body中,通常用来返回JSON数据或者XML数据。需要注意的是,使用此注解之后,Controller方法的返回值不会再走视图解析器,而是直接写到输出流中,
                    添加位置:
                                添加在方法上:只对当前方法起作用。
                                添加在类上:对该类里面的所有方法都起作用。
                    注解-@RestController:等同于@Controller和@ResponseBody;
                    添加位置:只能添加在类上面,该类里面的所有方法返回的都是JSON数据。

        3.4 在请求处理方法中添加@ResponseBody注解,将返回结果直接转换成JSON
                   @RequestMapping("/loadFwxxToJson")
                   @ResponseBody
                   public Fwxx loadFwxxToJson(@ModelAttribute Fwxx fwxx) {
                             ...
                   }
                   注:此请求处理方法返回的已经不是视图了

       3.5 测试方法:
            Book实体类型:通过书本id查询单个书本方法,返回单个书本对象;
            List类型:分页查询(模糊)书本方法,返回Book类型的List集合;
            List>类型:查询所有书本方法,返回Map类型的List集合;
            返回混合类型;

            定义方法

    List queryPager(Book book);

    Book querySingleBook(Integer bookId);

    @MapKey("bookId")
    List> queryAllListMap();

            编写sql


    select  from tb_book where true
    
       and book_name like concat('%',#{bookName},'%')
    
    order by book_id desc


    select 
    from tb_book

            controller层

@Controller
//@RestController//==@Component + @ResponseBody
@RequestMapping("/book")
public class BookController {
    @Autowired
    public IBookService bookService;

    @RequestMapping("/toPage/{page}")
    public String toPage(@PathVariable String page){
        return  page;
    }

    @ResponseBody //将数据结果转换成json
    @RequestMapping("/queryPager")
    public List queryPager(Book book,HttpServletRequest request){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(request);
        return bookService.queryPager(book,pageBean);
    }

    @ResponseBody
    @RequestMapping("/querySingleBook/{bookId}")
    public Book querySingleBook(@PathVariable Integer bookId){
        return bookService.querySingleBook(bookId);
    }

    @ResponseBody
    @RequestMapping("/queryAllListMap")
    public List> queryAllListMap(){
        return bookService.queryAllListMap();
    }

    //混合模式:返回分页查询的总数据量和数据集合。
    @ResponseBody
    @RequestMapping("/queryPager1")
    public Map queryPager1(Book book,HttpServletRequest request){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(request);

        //获取数据集合
        List bookList = bookService.queryPager(book, pageBean);
        //获取总数据量
        Integer total = pageBean.getTotal();
        //定义map集合
        Map jsonMap = new HashMap<>();
        jsonMap.put("bookList",bookList);
        jsonMap.put("total",total);
        return jsonMap;
    }

    //@ResponseBody //不走视图解析器,直接返回JSON字符串
    @RequestMapping("/toIndex")
    public String toIndex(){
        return "index";
    }
}

        前端页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/static/comment/head.jsp"%>


    Title


    
  1. 分页查询-queryPager-返回List<Book>
  2. 查询单个-querySingleBook-返回Book
  3. 查询所有-queryAllListMap-返回List<Map<String,Object>>
  4. 混合模式-queryPager1-返回Map<String,Object>

           测试打印的数据是json格式

 四、@JsonIgnore&@JsonIgnoreProperties()

        @JsonIgnore:此注解用于属性或者方法上(最好是属性上),用来完全忽略被注解的字段和方法对应的属性,即便这个字段或方法可以被自动检测到或者还有其他的注解,一般标记在属性或者方法上,返回的json数据即不包含该属性。

    @JsonIgnore // 忽略该字段
    private String bookName;

        @JsonIgnoreProperties():一般标记在属性或者方法上,返回的json数据即不包含该属性

@JsonIgnoreProperties({"bookName","bookPrice"})
public class Book {
    private Integer bookId;
    private String bookName;
    private Float bookPrice;
}

五、 解决JSON日期格式化问题:@JsonFormat
 @JsonFormat(pattern = "yyyy-MM-dd HH:mi:ss",timezone="GMT+8")
 private Date creataDate;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号