JSON

本文详细介绍了JSON的概念、语法,包括数据结构、获取方式,以及Java对象与JSON的转换实例。重点讲解了如何使用Jackson库进行对象序列化与反序列化,涵盖了Ajax与前后端交互的JSON应用案例。
摘要由CSDN通过智能技术生成

JSON

1.概念:JavaScript Object Notation JavaScript的对象表示法
2.语法

1.基本规则

       *数据在名称/值对中:json数据是由键值对构成的
            * 键用引号(单双都行)引起了,也可以不使用引号
            *值可以取的类型:
                    1.数字(整数或浮点数)
                    2.字符串(在双引号中)
                    3.逻辑值(true或false)
                    4.数组(在方括号中){“person”,[“tom”,“jack”]}
                    5.对象(在花括号中)
                    6.null

            *数据有逗号分隔:多个键值对由逗号分隔
            *花括号中保存对象:使用{}定义json格式
            *方括号保存数组
2.获取数据

  1. json对象.键名
  2. json对象[“键名”]
  3. 数组对象[索引]
  4. 遍历

代码样例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //1.基本格式
        var p={name:"张三",sex:"男"}
        console.log(p.name)
        //2.嵌套格式
        var p1=[
            {name:"张三",sex:"男"},
            {name:"李四",sex:"男"},
            {name:"王五",sex:"女"}
        ]
        console.log(p1[1].sex)
        var p2={person:[{name:"张三",sex:"男"},
        {name:"李四",sex:"男"},
        {name:"王五",sex:"女"}]
        }
        console.log(p2.person[2].name)
        console.log("json对象的获取")
        console.log("p")
        for(var x in p)
        {
            console.log(x+" "+p[x])
        }
        console.log("p1")
        for(var i=0;i<p1.length;i++)
        {
           var x=p1[i];
           for(var y in  x)
           {
               console.log(y+" "+x[y])
           }

        }
        for(var x in p2)
        {
            var y=p2[x];
           for(var i=0;i<y.length;i++)
           {

               for(var z in y[i])
               {
                   console.log(z+' '+y[i][z])
               }
           }
        }
    </script>
</head>
<body>

</body>
</html>

java对象转json
使用步骤

  1. 导入Jackson相关的jar包
  2. 创建Jackson的核心对象ObjectMapper
  3. 调用ObjectMapper的相关方法进行转换
    1.转换方法
        writeValue(参数1,obj)
              参数1:
                        File 将OBJ对象转换为json字符串 并保存到指定文件中
                        writer 将OBJ对象转换为json字符串 并将json数据填充到字符输出流中
                        OutputStream 将OBJ对象转换为json字符串 并将json数据填充到字节输出流中
          writeValueAsString(obj):将对象转为json字符串
    2.注解
          1.@JsonIgnore:排除属性(即省略)
          2.@JsonFormat: 属性值格式化
    3.复杂java对象转换
          1.List :数组
          2.Map: 与对象格式一致

json对象转java
使用步骤

  1. 导入Jackson相关的jar包
  2. 创建Jackson的核心对象ObjectMapper
  3. 调用ObjectMapper的相关方法进行转换
       Mapper.readValue(json字符串数据,Class)

相关代码展示

package com.blb.jsom;

import org.codehaus.jackson.map.ObjectMapper;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

public class json1 {
    public static void main(String[] args) throws IOException {
        person p=new person();
        p.setName("张三");
        p.setAge(35);
        p.setWork("项目经理");
        p.setBirthday(new Date());
        ObjectMapper mapper = new ObjectMapper();
        String s = mapper.writeValueAsString(p);
        System.out.println(s);
        mapper.writeValue(new BufferedWriter(new FileWriter("lib/a.txt")),p);
        person person = mapper.readValue(s, person.class);
        System.out.println(person);
    }
}

package com.blb.jsom;

import org.codehaus.jackson.annotate.JsonIgnore;

import java.util.Date;

public class person {
    private String name;
    private int age;
    private String work;
    @JsonIgnore
    private Date birthday;
    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    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;
    }

    public String getWork() {
        return work;
    }

    public void setWork(String work) {
        this.work = work;
    }

    @Override
    public String toString() {
        return "person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", work='" + work + '\'' +
                '}';
    }
}

json,ajax综合案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.5.1.min.js"></script>
    <script>
        $(function () {
           $("#btn").click(function () {
               var username=$("#username").val()
               alert(username)
         $.ajax(
             {
                 url:"demo1",
                 type:"POST",
                 data:{username:username},
                 success:function(data)
                 {
                     console.log(data)
                     console.log(data.username)

                 },
                 dataType:"json"
             }
         )
           })
        })
    </script>
</head>
<body>
<input type="text" id="username" >
<input type="button" id="btn" value="提交">
</body>
</html>
package com.blb.com;

import org.codehaus.jackson.map.ObjectMapper;

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.File;
import java.io.IOException;
import java.lang.reflect.Field;

@WebServlet("/demo1")
public class one extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
//        String age = req.getParameter("age");
        System.out.println(username);
//        System.out.println(age);
//        System.out.println("开始执行write函数");
//        resp.getWriter().write("username:"+username);
             User user=new User();
             user.setUsername(username);
        ObjectMapper mapper=new ObjectMapper();
       String s= mapper.writeValueAsString(user);
       resp.getWriter().write(s);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值