Json语法格式和XML语言

Json语法格式和XML语言,第1张

Json 一、简介

JSON(JavaScript Object Notation, JS 对象标记) 是⼀种轻量级的数据交换格式。它基于ECMAScript的⼀个⼦集,采⽤完全独⽴于编程语⾔的⽂本格式来存储和表示数据。简洁和清晰的层次结构使得JSON 成为理想的数据交换语⾔。易于⼈阅读和编写,同时也易于机器解析和⽣成,并有效地提升⽹络传输效率。

二、语法

JSON对象的语法有三种:对象、数组、混合模式

三、书写规范

1、使⽤{}和[]书写,{}表示对象类型,[]表示数组类型

2、.对象类型中每组数据之间⽤逗号隔开,每组中的关键字与值之间⽤冒号隔开

3、数组类型中每个值之间⽤逗号隔开,最后⼀个值后⾯不要加逗号

四、工具介绍

1、JSON在线解析⼯具:http://www.bejson.com/

作⽤:

1.校验JSON数据的语法是否正确

2.将不规范的JSON格式数据进⾏格式化

2、常⻅的json转换⼯具

json的转换⼯具是通过java封装好的⼀些jar⼯具包,直接将java对象或集合转换成json格式的字符串。

五、应用

Jackson使用:

导⼊json相关jar包

创建java对象或集合

使⽤jackson的ObjectMapper对象的writeValueAsString⽅法进⾏转换

import com.fasterxml.jackson.databind.ObjectMapper;
import com.ujiuye.pojo.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@WebServlet("/jackson")
public class jackson extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
     //创建User对象
     User user = new User();
     user.setUid(1001);
     user.setUsername("柳岩");
     user.setPassword("123");
     //创建List集合
     List<String> list = new ArrayList<>();
     list.add("Java研发⼯程师");
     list.add("web前端⼯程师");
     list.add("UI设计师");
     //创建Map集合
     Map<String, User> map = new HashMap<>();
     map.put("user", user);
     //转换json
     ObjectMapper mapper = new ObjectMapper();
     String userJson = mapper.writeValueAsString(user);
     String listJson = mapper.writeValueAsString(list);
     String mapJson = mapper.writeValueAsString(map);
     System.out.println(userJson);
     System.out.println(listJson);
     System.out.println(mapJson);
}}
六、案例

案例需求: 搜索框⾃动补全

在输⼊框输⼊关键字,下拉框中异步显示与该关键字相关的数据

jsp代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
     
        $Title$ 
        
        
        
    
    
        

Servlet代码
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ujiuye.pojo.Student;
import com.ujiuye.service.SearchService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/searchWord")
public class SearchWordServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //获取word值
        String word = request.getParameter("word");
        //业务处理
        SearchService ss = new SearchService();
        List<Student> sList = ss.searchWord(word);
        //判断
        if(sList != null && sList.size() > 0){
            //将集合转换成json
            ObjectMapper mapper = new ObjectMapper();
            String strJson = mapper.writeValueAsString(sList);
            System.out.println(strJson);
            //响应⻚⾯
            response.getWriter().write(strJson);
        }}}
Service层
package com.ujiuye.service;
import com.ujiuye.dao.SearchDao;
import com.ujiuye.pojo.Student;
import java.util.List;
public class SearchService {
    public List<Student> searchWord(String word) {
        SearchDao sd = new SearchDao();
        return sd.searchWord(word);
    }}
Dao层
import com.ujiuye.pojo.Student;
import com.ujiuye.utils.C3P0Utils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import java.sql.SQLException;
import java.util.List;
public class SearchDao {
    public List<Student> searchWord(String word) {
        try {
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            String sql = "select * from student where sname like ?";
            List<Student> sList = qr.query(sql, new BeanListHandler<Student>(Student.class),
                                           "%"+word+"%");
            return sList;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null; }
}
效果

XML 一、简介

XML 指可扩展标记语⾔(EXtensible Markup Language),是⼀种标记语⾔,很类似 HTML,设计宗旨是传输数据,⽽⾮显示数据。标签没有被预定义。您需要⾃⾏定义标签。

二、语法

1、⽂档声明:

2、⾃定义标签:

<根标签>

<⼦标签 属性=“值”>内容

<⼦标签 属性=“值”>内容

三、约束

DTD(⽂档类型定义)的作⽤是定义 XML ⽂档的合法构建模块。


DOCTYPE note [
 <!ELEMENT note (to+,from,heading,body)>
 <!ELEMENT to (#PCDATA)>
 <!ELEMENT from (#PCDATA)>
 <!ELEMENT heading (#PCDATA)>
 <!ELEMENT body (#PCDATA)>
 ]>
<note>
    <to>xxto>
    <to>to>
    <from>Johnfrom>
    <heading>Reminderheading>
    <body>Don't forget the meeting!body>
note>

XML Schema 是基于 XML 的 DTD 替代者,XML Schema 描述 XML ⽂档的结构。

student.xsd⽂件:

<xsd:schema xmlns="http://www.ujiuye.com"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.ujiuye.com" elementFormDefault="qualified">
    <xsd:element name="students" type="studentsType"/>
    <xsd:complexType name="studentsType">
        <xsd:sequence>
            <xsd:element name="student" type="studentType" minOccurs="0"
                         maxOccurs="unbounded"/>
        xsd:sequence>
    xsd:complexType>
    <xsd:complexType name="studentType">
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string"/>
            <xsd:element name="age" type="ageType" />
            <xsd:element name="sex" type="sexType" />
        xsd:sequence>
        <xsd:attribute name="number" type="numberType" use="required"/>
    xsd:complexType>
    <xsd:simpleType name="sexType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="male"/>
            <xsd:enumeration value="female"/>
        xsd:restriction>
    xsd:simpleType>
    <xsd:simpleType name="ageType">
        <xsd:restriction base="xsd:integer">
            <xsd:minInclusive value="0"/>
            <xsd:maxInclusive value="256"/>
        xsd:restriction>
    xsd:simpleType>
    <xsd:simpleType name="numberType">
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="\d{4}"/>
        xsd:restriction>
    xsd:simpleType>
xsd:schema>

student.xml:



<students
          xmlns="http://www.ujiuye.com"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.ujiuye.com student.xsd"
          >
    <student number="1111">
        <name>tomname>
        <age>111age>
        <sex>malesex>
    student>
students>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1296241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存