JSon使用

news2024/11/18 8:58:24

官方文档

JSon在线文档:https://www.w3school.com.cn/js/js_json_intro.asp

Ajax在线文档:https://www.w3school.com.cn/js/js_ajax_intro.asp

Json介绍

在这里插入图片描述

Json快速入门

在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json 快速入门案例</title>
    <script type="text/javascript">

        window.onload = function () {
            /*
            老师解读
            1. myJson 就是一个json对象
            2. 演示如何获取到json对象的各个属性/key
             */
            var myJson = {
                "key1": "韩顺平教育",  // 字符串
                "key2": 123,    // Number
                "key3": [1, "hello", 2.3],  // 数组
                "key4": {"age": 12, "name": "jack"},  //json对象
                "key5": [      //json数组
                    {"k1": 10, "k2": "milan"},
                    {"k3": 30, "k4": "smith"},

                ]
            };

            //1. 取出key1
            console.log("key1= ", myJson.key1);
            //2. 取出key3
            console.log("key3= ", myJson.key3);
            //   可以对key3取出的值(Array), 遍历
            for (var i = 0; i < myJson.key3.length; i++) {
                console.log("第%i个元素的值= " , i, myJson.key3[i]);
            }
            //3. 取出key4
            console.log("key4= " , myJson.key4 , " name= " , myJson.key4.name);
            //4. 取出key5
            console.log("key5= " , myJson.key5, " k4= ", myJson.key5[1].k4)
        }

    </script>
</head>
<body>
<h1>json 快速入门案例</h1>
</body>
</html>

Json对象和字符串对象转换

应用案例

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JSON对象和字符串对象转换</title>
    <script type="text/javascript">
        window.onload = function () {
            //解读JSON
            //1.JSON 是一个js的内置对象(build-in),可以直接使用
            //  console.log("JSON=", JSON);

            //演示如何将以json对象->string
            var jsonPerson = {
                "name": "jack",
                "age": 20
            }

            console.log("jsonPerson=" , jsonPerson);
            var strPerson = JSON.stringify(jsonPerson);
            console.log("strPerson= ", strPerson, " strPerson类型= ", typeof strPerson);

            //string->json
            //注意要转成json对象的string 格式必须满足json格式
            var strDog = "{\"name\":\"小黄狗\", \"age\":2}";
            var jsonDog = JSON.parse(strDog);
            console.log("jsonDog= ", jsonDog);

        }
    </script>
</head>
<body>
<h1>JSON对象和字符串对象转换</h1>

</body>
</html>

注意事项和细节

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json和字符串转换的注意事项和细节</title>
    <script type="text/javascript">
        window.onload = function () {

            var jsonPerson = {
                "name": "jack",
                "age": 20
            }

            //1. JSON.springify(json对象) 会返回对应string, 并不会影响原来json对象
            //   可以这样理解 java基础 int n = 10; double n2 = (double)n;
            var strPerson = JSON.stringify(jsonPerson);
            console.log("jsonPerson=", jsonPerson);

            //2. JSON.parse(string) 函数会返回对应的json对象, 并不会影响原来string

            var strDog = "{\"name\":\"小黄狗\", \"age\":2}";
            var jsonDog = JSON.parse(strDog);
            console.log("strDog=", strDog, " 类型= ", typeof strDog);

            //3. 在定义Json对象时, 可以使用 ' ' 表示字符串
            //   前面的key 可以不用" " 或者 ' '

            var jsonPerson2 = {
                name: 'jack',
                age: 20
            }
            console.log("jsonPerson2=", jsonPerson2);
            //4. 但是在把原生字符串转成 json对象时, 必须使用 "", 否则会报错 比如
            //   工作时,非常容易错
            var strdog3 = "{\"name\":\"小黄狗~\", \"age\": 4}";
            JSON.parse(strdog3);

            //5. JSON.springify(json对象) 返回的字符串, 都是 "" 表示的字符串
            var strPerson2 = JSON.stringify(jsonPerson2);
            var parse = JSON.parse(strPerson2);
            console.log("parse=", parse);

        }
    </script>
</head>
<body>

</body>
</html>

Json在java中使用

说明

在这里插入图片描述

Jaon在java中应用场景

在这里插入图片描述

应用实例 JavaJson.java Book.java

package com.hspedu.json;

//这是一个JavaBean, java基础中,讲过.
public class Book {
    private Integer id;
    private String name;

    public Book(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
package com.hspedu.json;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JavaJson {
    public static void main(String[] args) {

        //创建一个gson对象,做完一个工具对象使用
        Gson gson = new Gson();

        //演示javabean 和 json字符串的转换
        Book book = new Book(100, "韩顺平零基础学Java");

        //1. 演示把javebean -> json字符串
        String strBook = gson.toJson(book);
        System.out.println("strBook=" + strBook);
        //2. json字符串->javabean
        //老韩解读
        //(1) strBook 就是 json字符串
        //(2) Book.class 指定将 json字符串转成 Book对象
        //(3) 底层是反射机制
        Book book2 = gson.fromJson(strBook, Book.class);
        System.out.println("book2=" + book2);

        //3. 演示把list对象 -> json字符串
        List<Book> bookList = new ArrayList<>();
        bookList.add(new Book(200, "天龙八部"));
        bookList.add(new Book(300, "三国演义"));

        //老韩解读, 因为把对象,集合转成字符串, 相对比较简单
        //底层只需要遍历, 按照json格式拼接返回即可
        String strBookList = gson.toJson(bookList);
        System.out.println("strBookList= " + strBookList);

        //4. 演示把json字符串 -> list对象
        //老师解读
        //(1) 如果需要把json字符串 转成 集合这样复杂的类型, 需要使用gson提供的一个类
        //(2) TypeToken , 是一个自定义泛型类, 然后通过TypeToken来指定我们需要转换成的类型
        /*
        com.google.gson.reflect

        public class TypeToken<T> {
            final Class<? super T> rawType;
            final Type type;
            final int hashCode;

            protected TypeToken() {
                this.type = getSuperclassTypeParameter(this.getClass());
                this.rawType = Types.getRawType(this.type);
                this.hashCode = this.type.hashCode();
            }
         */
        //老师解读
        //(1) 返回类型的完整路径java.util.List<com.hspedu.json.Book>
        //(2) gson的设计者,需要得到类型的完整路径,然后进行底层反射
        //(3) 所以gson 设计者就提供TypeToken, 来搞定.

        //二说 TypeToken , 为甚要加 {}

        //(1) 如果我们  new TypeToken<List<Book>>()  提示
        // 'TypeToken()' has protected access in 'com.google.gson.reflect.TypeToken'
        //(2) 因为TypeToken 的无参构造器是protected , 而 new TypeToken<List<Book>>() 就是调用其无参构造器
        //(3) 根据java基础, 如果一个方法是protected ,而且不在同一个包, 是不能直接访问的, 因此报错
        //(4) 为什么 new TypeToken<List<Book>>(){} 使用就可以,这里就涉及到匿名内部类的知识.
        //(5) 当 new TypeToken<List<Book>>(){} 其实这个类型就是不是 TypeToken 而是一个匿名内部类(子类)
        //(6) 而且这个匿名内部类是有自己的无参构造器(隐式), 根据java基础规则 当执行子类的无参构造器时, 默认super();

        //三说 TypeToken->举一个例子.[对java基础回顾.]
        Type type = new TypeToken<List<Book>>() {}.getType();

        List<Book> bookList2 = gson.fromJson(strBookList, type);
        System.out.println("bookList2= " + bookList2);


        //5, 把map对象->json字符串
        Map<String, Book> bookMap = new HashMap<>();
        bookMap.put("k1", new Book(400, "射雕英雄传"));
        bookMap.put("k2", new Book(500, "西游记"));

        String strBookMap = gson.toJson(bookMap);
        System.out.println("strBookMap=" + strBookMap);

        //6. 把json字符串 -> map对象
        //   new TypeToken<Map<String, Book>>() {}.getType()=> java.util.Map<java....String,com.hspedu.json.Book>
        Map<String, Book> bookMap2 = gson.fromJson(strBookMap,
                new TypeToken<Map<String, Book>>() {
                }.getType());
        System.out.println("bookMap2=" + bookMap2);

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/445155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从编译器角度理解C++编译和连接原理

C编译链接整体介绍 链接主要工作 1 所有.o文件段的合并&#xff0c;符号表合并后&#xff0c;进行符号解析 链接时就是在符号表中找对应的符号是否只出现于.text或.data段一次&#xff0c;若一次都无&#xff0c;则符号未定义&#xff1b;若出现多次&#xff0c;符号重定义 符…

JavaSE补充 | apache-common包的使用,快速完成IO操作

目录 一&#xff1a;apache-common包的使用&#xff0c;快速完成IO操作 1. IOUtils类的使用 2. FileUtils类的使用 一&#xff1a;apache-common包的使用&#xff0c;快速完成IO操作 IO技术开发中&#xff0c;代码量很大&#xff0c;而且代码的重复率较高&#xff0c;为此Ap…

【MySQL】数据库约束和聚合函数的使用

目录 上篇在这里喔~ 1.数据库约束 1.NULL约束 2.UNIQUE唯一约束 3.DEFAULT默认值约束 4.PRIMARY KEY主键约束 5.FOREIGN KEY外键约束 2.表的设计 1.设计思路​编辑 2.固定套路​编辑 2.1一对一关系 2.2一对多关系 ​编辑 2.3多对多关系 ​编辑​编辑​编辑 3.插入…

《C++模板》(初阶)零基础讲解

本文主要介绍C的模板&#xff0c;包括函数模板和类模板 文章目录 为什么要有模板1、函数模板1.1 函数模板概念1.1 函数模板格式1.3 函数模板的原理1.4 函数模板的实例化1.5 模板参数的匹配原则 2、类模板2.1 类模板的定义格式2.2 类模板的实例化 为什么要有模板 就拿我们写的交…

从“捐赠openEuler”到“向openEuler捐赠”,openEuler生态走入高速发展期

【中国&#xff0c;上海&#xff0c;2023年4月21日】openEuler Developer Day 2023于4月20-21日在线上和线下同步举办。本次大会由开放原子开源基金会指导&#xff0c;中国软件行业协会、openEuler社区、边缘计算产业联盟共同主办&#xff0c;以“万涓汇流&#xff0c;奔涌向前…

ROS使用(10)URDF

Building a visual robot model from scratch 在本教程中&#xff0c;我们将构建一个机器人的视觉模型&#xff0c;它看起来有点像R2D2。 在后面的教程中&#xff0c;您将学习如何 清晰地表达模型&#xff0c;添加一些物理属性&#xff0c;并使用xacro生成更简洁的代码&#x…

Rebex Total Pack文件传输组件,改进的递归断路器

Rebex Total Pack文件传输组件,改进的递归断路器 文件系统&#xff1a;改进的递归断路器。 ZIP&#xff1a;改进了ZIP数据描述符解析器&#xff0c;以更好地处理与Zip64的不一致性。 .NET组件 Rebex文件服务器-适用于.NET的SFTP、SCP和SSH服务器组件。可以轻松创建可供任何SFTP…

AI 时代的学习方式: 和文档对话

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

Spring请求与响应——响应

我们上一篇文章说了请求&#xff0c;SpringMVC接收到请求和数据后&#xff0c;进行一些了的处理&#xff0c;当然这个处理可以是转发给Service&#xff0c;Service层再调用Dao层完成的&#xff0c;不管怎样&#xff0c;处理完以后&#xff0c;都需要将结果告知给用户也就是给用…

Codeium的使用

官网&#xff1a;CodeiumCodeium offers best in class AI code completion & search — all for free. It supports over 40 languages and integrates with your favorite IDEs, with lightning fast speeds and state-of-the-art suggestion quality.https://codeium.co…

数据结构_第十三关(3):归并排序、计数排序

目录 归并排序 1.基本思想&#xff1a; 2.原理图&#xff1a; 1&#xff09;分解合并 2&#xff09;数组比较和归并方法&#xff1a; 3.代码实现&#xff08;递归方式&#xff09;&#xff1a; 4.归并排序的非递归方式 原理&#xff1a; 情况1&#xff1a; 情况2&…

docker的三种镜像创建

目录 dock的三种镜像创建 基于现有的镜像创建 基于本地模板创建 基于Dockerfile 创建 联合文件系统 镜像加载原理 为什么Docker里的centos的大小才200M&#xff1f; Docker 镜像结构的分层 Dockerfile 操作常用的指令 Dockerfile格式 dockerfile构建apache实例 dock的…

探索【Stable-Diffusion WEBUI】各种插件和追求更高效

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;界面与翻译(1.1) 主题风格&#xff08;kitchen Theme&#xff09;(1.2) 对照翻译&#xff08;Bilingual Localization&#xff09;(1.3) 自行翻译(1.3) 提示词翻译&#xff08;Prompt Translator&#xff09…

asp.net765数码手机配件租赁系统

员工部分功能 1.员工登录&#xff0c;员工通过自己的账号和密码登录到系统中来&#xff0c;对租赁信息进行管理 2.配件查询&#xff0c;员工可以查询系统内的配件信息 3.客户信息管理&#xff0c;员工可以管理和店内有业务往来的客户信息 4.配件租赁&#xff0c;员工可以操作用…

字节蝉联全球独角兽榜首,ChatGPT企业狂升200多位

江山代有才人出&#xff0c;各领风骚数百年。 4月18日&#xff0c; 胡润研究院发布了《2023全球独角兽榜》&#xff0c;列出了全球成立于2000年之后&#xff0c;价值10亿美元以上的非上市公司。 榜单显示&#xff0c;全球一共有1361家独角兽企业入围榜单&#xff0c;分布在48个…

不要再问为什么在职读研?在中国人民大学与加拿大女王大学金融硕士项目听到了最好的答案

为什么要在职读研呢&#xff1f;平时工作已经很忙很累了&#xff0c;再利用业余时间去学习是为什么呢&#xff1f;有不满足于现状的&#xff0c;有一直为了自己目标努力冲刺的&#xff0c;有为了圆自己名校梦想的&#xff0c;也有单纯喜欢专业喜欢学校的。相信每个读研人都有自…

在时代的浪潮中实在前行,实在智能应邀出席浪潮数字企业2023生态伙伴大会

4月15日&#xff0c;以“新产品 新路径 新生态&#xff0c;共赢2023”为主题的浪潮数字企业生态伙伴大会在济南召开。 浪潮集团执行总裁王兴山、浪潮数字企业总经理魏代森、浪潮数字企业副总经理兼CTO郑伟波、IDC中国副总裁兼首席分析师武连峰等业内专家、实在智能等行业领军企…

三步搞定centos虚拟机的克隆

vm17centos7min版本&#xff0c;三步实现大数据的基础操作 一 在vm中选择克隆选项二 配置IP地址三 三台设备基于秘钥实现免密登录1 三台设备分别执行下面的指令&#xff0c;产生公钥和私钥2 给hadoop124和hadoop123 和hadoop122执行下列指令&#xff0c;将123和124的公钥拷贝给…

【小程序云开发】30分钟搭建个人相册小程序

文章目录 前言准备工作小程序架构创建小程序云开发环境创建数据库搭建个人相册写在最后 前言 图片存储&#xff0c;是所有应用开发里最常见的场景之一。 本文将通过实战“个人相册小程序”开发&#xff0c;教你如何借助小程序 云开发 能力&#xff0c;提升功能开发效率&#x…

【环境篇 1】CC2340环境搭建

文章目录 1 准备安装条件2.安装工具2.1 CCS12.1 安装2.2 下载并安装CC23XX SDK2.3 下载并安装对应开发环境和版本的 Sysconfig2.4 下载对应版本Free-RTOS2.5 下载并安装 TI Clang 3 工程编译3.1 环境修改3.2 导入工程2.4 编译项目 1 准备安装条件 CCS IDE编译工具&#xff0c;…