杨老师课堂之零基础学习JSON知识点

简介: 杨老师课堂之零基础学习JSON知识点

JSON

  1. json是什么
  • 它是js提供的一种数据交换格式!

json的语法

  • {}:是对象!
  • > 属性值:
  • > 属性名必须使用双引号括起来!单引不行!!!
  • null
  • 数值
  • 字符串
  • 数组
  • Boolean值: true/false

Json应用

Json与XML的对比

  • 可读性:XML胜出
  • 解析难度:JSON本身就是JS对象(主场作战),所以简单很多
  • 流行度:XML已经流行好多年,但在AJAX领域,JSON更受欢迎。

json-lib

  1. 是什么?
  • 它可以把javabean转换成json串
  1. jar包
  1. 核心类
  • JSONObject –> Map
    > toString();
    > JSONObject map = JSONObject.fromObject(person):把对象转换成JSONObject对象
  • JSONArray –> List


  • > toString()
    > JSONArray jsonArray = JSONArray.fromObject(list):把list转换成JSONArray对象

演示代码:

/**
* 演示JSON-LIB小工具 
*/
public class Demo1 {
/*
 * 当map来用
 */
@Test
public void fun1() {
    JSONObject map = new JSONObject();
    map.put("name", "zhangSan");
    map.put("age", 23);
    map.put("sex", "male");

    String s = map.toString();
    System.out.println(s);
}

/*
 * 当你已经有一个Person对象时,可以把Person转换成JSONObject对象
 */
@Test
public void fun2() {
    Person p = new Person("liSi", 32, "female");
    // 把对象转换成JSONObject类型
    JSONObject map = JSONObject.fromObject(p);
    System.out.println(map.toString());
}

/**
 * JSONArray
 */
@Test
public void fun3() {
    Person p1 = new Person("zhangSan", 23, "male");
    Person p2 = new Person("liSi", 32, "female");

    JSONArray list = new JSONArray();
    list.add(p1);
    list.add(p2);

    System.out.println(list.toString());
}

/**
 * 原来就有一个List,我们需要把List转换成JSONArray
 */
@Test
public void fun4() {
    Person p1 = new Person("zhangSan", 23, "male");
    Person p2 = new Person("liSi", 32, "female");
    List<Person> list = new ArrayList<Person>();
    list.add(p1);
    list.add(p2);


    System.out.println(JSONArray.fromObject(list).toString());
}
}

4,Fastjson是什么

  • 阿里巴巴公司开源的速度最快的Json和对象转换工具
  • fastjson入口类是com.alibaba.fastjson.JSON,
    主要API是JSON.toJSONString和parseObject,
  • 使用fastjson要注意要转换的类必须有默认的无参构造方法。

5.导包

  1. com.alibaba.fasthson.JSON

6.举例

  1. 将对象类型转换成为字符串
    User.java
public class User {

private int id;
private String username;
private String password;

public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

}

测试类

public class UserTest {

@Test
public void fun() {
    User user = new User();
    user.setId(2);
    user.setUsername("rose");
    user.setPassword("123");
    // 使用JSON的 toJSONString 方法  传入对象  
     String jsonString = JSON.toJSONString(user);
     System.out.println(jsonString);
}
}


运行后结果:

{"id":2,"password":"123","username":"rose"}

2.将集合类型转换成为字符串

依旧使用上面的User实体类

测试类:

public class UserTest {

@Test
public void fun() {
    ArrayList<User> list = new ArrayList<User>();
    // 第一个对象
    User user = new User();
    user.setId(2);
    user.setUsername("rose");
    user.setPassword("123");
    // 将第一个对象添加到集合中去
    list.add(user);

    // 第二个对象
    User user2 = new User();
    user2.setId(12);
    user2.setUsername("jack");
    user2.setPassword("1234");
    // 将第二个对象添加到集合中去
    list.add(user2);

    //list中此时有两个元素

    String jsonString = JSON.toJSONString(list);
    System.out.println(jsonString);
}
}

运行后结果:

[{"id":2,"password":"123","username":"rose"},
"id":12,"password":"1234","username":"jack"}]
  1. 将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息

测试类:

public class UserTest {   
@Test
public void fun() {
    // str是一个json的文本数据 ,“\”为 双引号的转移符号
    String str = "{\"name\":\"rose\"}";

    JSONObject jsonObject = JSON.parseObject(str);

    System.out.println(jsonObject.get("name"));
}
}

将Json文本数据转换为JavaBean数据

注意:这里的Json文本信息中的键的名称必须和JavaBean中的字段名称一样

键中没有的在这个JavaBean中就显示为null

测试类

public class UserTest {   
@Test
public void fun() {
    String str = "[
        {\"username\":\"rose\",\"password\":\"321\"}",
        {\"username\":\"jerry\",\"password\":\"123\"}"
    ];

    User user = JSON.parseObject(str, User.class);

    System.out.println(user.getUsername()+":"+user.getPassword());
}
}

运行后的结果:

rose:321
  1. 将JSON文本转换为JavaBean的集合;

测试类

public class UserTest {   
@Test
public void fun() {
    String str = "[{\"username\":\"rose\",\"password\":\"321\"},"
            + "{\"username\":\"jerry\",\"password\":\"123\"}]";

    List<User> list = JSON.parseArray(str, User.class);

    for (User u : list) {
        System.out.println(u.getUsername()+":"+u.getPassword());
    }
}


运行后的结果:

rose:321
jerry:123
  1. 将日期对象转换为字符串

测试类

public class UserTest {   
@Test
public void fun() {
    Date date = new Date();
     System.out.println("date=" + date);
     String jsonString = JSON.toJSONString(date);
     System.out.println("--------------");
     String dateFormat = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd: hh:mm:ss");
     System.out.println("dateFormat:"+dateFormat);
}

运行后的结果:

date=Wed Aug 22 19:08:06 CST 2018
<hr />

dateFormat:"2018-08-22: 07:08:06"
使用Maven进行搭建依赖
<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.1.37</version>
 </dependency>

目录
相关文章
|
7月前
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
96 0
|
7月前
|
XML JSON 前端开发
Ajax技术【Ajax技术详解、 Ajax 的使用、Ajax请求、 JSON详解、JACKSON 的使用 】(一)-全面详解(学习总结---从入门到深化)
Ajax技术【Ajax技术详解、 Ajax 的使用、Ajax请求、 JSON详解、JACKSON 的使用 】(一)-全面详解(学习总结---从入门到深化)
235 1
|
7月前
|
编解码 JavaScript 前端开发
TypeScript【第三方声明文件、自定义声明文件、tsconfig.json文件简介、tsconfig.json 文件结构与配置】(六)-全面详解(学习总结---从入门到深化)
TypeScript【第三方声明文件、自定义声明文件、tsconfig.json文件简介、tsconfig.json 文件结构与配置】(六)-全面详解(学习总结---从入门到深化)
372 0
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
50 1
|
4月前
|
存储 JSON 测试技术
Python中最值得学习的第三方JSON库
Python中最值得学习的第三方JSON库
|
5月前
|
JSON JavaScript 前端开发
|
6月前
|
存储 JSON JavaScript
认识学习JSON
认识学习JSON
|
7月前
|
XML JSON JavaScript
|
2月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。