JavaWeb JavaScript ④ JS的对象和JSON

news2024/12/26 3:52:15

只要你的风格是适应客观规律的,那你以后会越来越好,做事情会越来越顺利                

                                                                                                                —— 24.8.26

一、JS创建对象

语法

方式1 new Object()

方式2 {属性名:属性值,… …,函数名:function(){}}

方式3 Object.create()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 方式1 new Object()
        // 方式2 {属性名:属性值,… …,函数名:function(){}}
        // 方式3 Object.create()

        var person = new Object();
        person.name = "张三";
        person.age = 20;
        person.eat = function(food){
            console.log(this.name + "在吃" + food);
        }
        // 访问属性
        console.log(person.name); // 张三
        console.log(person.age); // 20
        // 调用函数
        person.eat("苹果"); // 张三在吃苹果

        var person2 = {
            age: 25,
            name:"李四",
            eat: function(food){
                console.log(this.name + "在吃" + food);
            }
        }
        // 访问属性
        console.log(person2.name); // 李四
        console.log(person2.age); // 25
        // 调用函数
        person2.eat("西瓜"); // 李四在吃苹果

        var person1 = Object.create(null);
        person1.name = "王五";
        person1.age = 27;
        person1.eat = function(food){
            console.log(this.name + "在吃" + food);
        }
        // 访问属性
        console.log(person1.age); // 25
        console.log(person1.name); // 王五
        // 调用函数
        person1.eat("香蕉"); // 王五在吃香蕉

    </script>
</head>
<body>
    
</body>
</html>

二、JSON格式

一个特定的字符串语法结构,JSON格式的字符串,在前后端都可以很方便的和对象之间进行转换

说明:

        JSON的语法:

var personStr = '{"属性名":"属性值"}'

                var obj="{'属性名':'属性值','属性名':{'属性名':'属性值'}',属性名':{'值1','值2','值3'}"

        JSON字符串一般用于传递数据,所以字符串中的函数就显得没有意义,在此不做研究

        通过JSON.parse()方法可以将一个JSON串转换成对象

        通过JSON.stringify()方法可以将一个对象转换成一个JSON格式的字符串

JSON在客户端的使用

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /*
        JSON格式的语法
        var personStr = '{"属性名":"属性值","属性名":"属性值","属性名":["属性值"],"属性名":{"属性值"}}'
        属性名必须用 “” 包裹
        属性值 字符串必须用“”包好,数字可以不处理
        属性值可以是字符串、数字、布尔值、数组、对象、null
        */

        // 这是一个JSON格式的字符串
        var personStr = '{"name":"张三","age":25,"dog":{"dname":"初一"},"loveMusic":["愿与愁","你一定能成为你想要成为的人"],"friends":[{"fname":"孙茂榛"},{"fname":"王衍博"},{"fname":"刘宇昕"}]}'
        // 通过JSON.parse()方法将JSON字符串转换为一个JS对象
        var person = JSON.parse(personStr)
        console.log(person)
        console.log(typeof person)
        console.log(personStr)
        console.log(typeof personStr)
        console.log(person.name)
        console.log(person.dog.dname)
        console.log(person.loveMusic[1])
        console.log(person.friends[1].fname)    

    </script>
</head>
<body>
    
</body>
</html>

JSON在服务端的使用

代码

Dog类

package JSON;

import java.util.Objects;

public class Dog {
    private String name;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Dog dog = (Dog) o;
        return Objects.equals(name, dog.name);
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(name);
    }

    public Dog() {
    }

    public Dog(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

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

Person类

package JSON;

import java.util.Objects;

public class Person {
    private String name;

    private Integer age;

    private Dog dog;

    public Person() {
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return Objects.equals(name, person.name) && Objects.equals(age, person.age) && Objects.equals(dog, person.dog);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age, dog);
    }

    public Person(String name, Integer age, Dog dog) {
        this.name = name;
        this.age = age;
        this.dog = dog;
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }
}

测试类

package TestJson;

import JSON.Dog;
import JSON.Person;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

public class test {

    // 字符串转对象
    @Test
    public void testWriteJson() throws JsonProcessingException {
        // 实例化Person对象,将Person对象转换为JSON串
        Dog dog = new Dog("初一");
        Person person = new Person("张三",13,dog);
        // 将Person对象转换成一个字符串 Gson jackson Fastjson 都是转换工具

        ObjectMapper mapper = new ObjectMapper();
        String personStr = mapper.writeValueAsString(person);
        System.out.println(personStr);
    }


    // 对象转字符串
    @Test
    public void testReadJson() throws JsonProcessingException {
        String personStr = "{\"name\":\"张三\",\"age\":13,\"dog\":{\"name\":\"初一\"}}";
        ObjectMapper mapper = new ObjectMapper();
        Person person = mapper.readValue(personStr, Person.class);
        System.out.println(person);
    }
}

三、JSON和Map、List、Array之间的转换

1.map转JSON对象

    // map转JSON对象
    @Test
    public void testMapToJason() throws JsonProcessingException {
        Map data = new HashMap();
        data.put("a","valuea");
        data.put("b","valueb");
        ObjectMapper mapper = new ObjectMapper();
        String s = mapper.writeValueAsString(data);
        System.out.println(s);
    }

2.List转JSON对象

    // List转JSON对象
    @Test
    public void testListToJson() throws JsonProcessingException {
        List data = new ArrayList();
        data.add("苦");
        data.add("难");
        data.add("是");
        data.add("花");
        data.add("开");
        data.add("的");
        data.add("伏");
        data.add("笔");

        ObjectMapper mapper = new ObjectMapper();
        String s = mapper.writeValueAsString(data);
        System.out.println(s);
    }

3.List转Array数组

    // Array转JSON对象
    @Test
    public void testArrayToJson() throws JsonProcessingException {
        String[] data = {"苦","难","是","花","开","的","伏","笔"};

        ObjectMapper mapper = new ObjectMapper();
        String s = mapper.writeValueAsString(data);
        System.out.println(s);
    }

同理,元素也可以是对象

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

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

相关文章

Python | Leetcode Python题解之第371题两整数之和

题目&#xff1a; 题解&#xff1a; MASK1 4294967296 # 2^32 MASK2 2147483648 # 2^31 MASK3 2147483647 # 2^31-1class Solution:def getSum(self, a: int, b: int) -> int:a % MASK1b % MASK1while b ! 0:carry ((a & b) << 1) % MASK1a (a ^ b) % MA…

Agent实际落地的应用 未来生活的无形助手

在这个信息爆炸的时代&#xff0c;我们每个人都在追求更高效的生活方式。想象一下&#xff0c;如果有一个无形的助手&#xff0c;能够理解我们的需求&#xff0c;自动处理繁琐的任务&#xff0c;甚至为我们提供个性化的建议&#xff0c;那将是多么美好的体验&#xff01;这正是…

线性DP经典题型

数字三角形&#x1f342; #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;vector<vector<int>>arr(n1,vector<int>(n1,0));for(int i 1;i<n;i){for(int j 1;j<i;j){cin>>arr[i][j];}}vector<vector<i…

【精选】分享9款AI毕业论文生成初稿题目网站

在当今学术研究领域&#xff0c;AI技术的应用日益广泛&#xff0c;尤其是在学术论文的撰写过程中。AI论文生成器的出现&#xff0c;极大地简化了学术写作流程&#xff0c;提高了写作效率。以下是9款推荐的AI毕业论文生成初稿的网站&#xff0c;它们各有特色&#xff0c;能够满足…

【Qt】多元素控件QTableWidget

多元素控件QTableWidget 使用QTableWidget表示一个表格控件&#xff0c;一个表格中包含若干行、每一个行又包含若干列。 表格中的每一个单元格&#xff0c;都是一个QTableWidget对象。 QTableWidget核心方法 方法说明 item(int row, int column) 根据⾏数列数获取指定的 Q…

【电路笔记】-运算放大器基础

运算放大器基础 文章目录 运算放大器基础1、概述2、运算放大器表示3、开环增益(Open-Loop Gain)4、输入和输出阻抗5、带宽6、偏移电压7、理想运算放大器模型7.1 饱和模式7.2 线性模式8、实际运算放大器9、总结1、概述 本文将介绍运算放大器(也称为运算放大器,Operational …

HandBrakeCLI 压缩工具的简单实用

HandBrakeCLI -i input.mp4 -o output.mp4 --encoder qsv_h264 -b 500k --preset "Android 576p25" --width 320 --height 576 --quiet--encoder qsv_h264 意思代表inter的gpu编码 -b 500k 设置比特率 --preset "Android 576p25" 设置预设 --width 320 --…

揭秘OTP与MTP:你的存储小秘密,一次性和多次可编程大不同!

NVM,即非易失性存储器,是一种非易失性内存。 NVM的特点是存储的数据在断电后不会消失。传统的NVM,如掩模ROM、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、NAND/NOR闪存等,以及目前正在开发的许多新型状态存储器,如磁性存储器(MRAM)、电…

Jar包导入本地maven仓库

当jar包未引入到公共maven仓库时&#xff0c;直接通过maven坐标的方式引入会报错&#xff0c;找不到该依赖。所以可以将jar包导入到本地maven仓库&#xff0c;再通过maven坐标引入后就没有问题。 mvn install:install-file -Dfilexxxxxx.jar -DgroupIdcom.xx -DartifactIdxxxx…

idea debug 各个步骤含义

基本功能 IntelliJ IDEA 的 Debug 功能提供了强大的调试支持&#xff0c;允许开发者逐步执行代码&#xff0c;检查变量值&#xff0c;评估表达式等。以下是 Debug 模式中常见的几个按钮及其含义&#xff1a; Show Execution Point (显示执行点)&#xff1a;将光标跳转到当前正在…

如何使用ssm实现模具制造企业订单跟踪管理系统+vue

TOC ssm256模具制造企业订单跟踪管理系统vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;…

编程仙尊——深入理解指针(1)

目录 1.认识指针 2.指针变量和地址 2.1取地址操作符&#xff08;&&#xff09; 2.2 指针变量和解引用操作符 2.3 指针变量的大小 3.指针类型的意义 3.1指针的解引用 3.2 指针-整数 3.3 void*指针 1、认识指针 在生活中&#xff0c;一栋楼的每个房间都会有房间号 …

OpenGL实现3D游戏编程【连载5】——纹理坐标、纹理贴图

OpenGL实现3D游戏编程【连载5】——纹理坐标、纹理贴图 欢迎来到zhooyu的专栏。 个人主页&#xff1a;【zhooyu】 文章专栏&#xff1a;【OpenGL实现3D游戏编程】 本专栏内容&#xff1a; 我们从游戏的角度出发&#xff0c;用C去了解一下游戏中的功能都是怎么实现的。这一切还…

六、前后端分离通用权限系统(6)

&#x1f33b;&#x1f33b; 目录 一、用户管理1.1、代码生成器1.2、用户管理后端 CRUD1.2.1、controller1.2.2、service 接口1.2.3、service 接口实现1.2.4、mapper1.2.5、xml1.2.6、knife4j 测试 1.3、用户管理前端 CRUD1.3.1、添加路由1.3.2、定义基础 api1.3.3、实现页面功…

架构设计(5)服务网格(Service Mesh)

服务网格&#xff08;Service Mesh&#xff09;是一个专门设计的基础设施层&#xff0c;用于管理和处理微服务架构中服务间的通信。服务网格通过在服务间插入代理&#xff0c;提供了一种透明的方式来控制、监控和管理服务之间的流量。以下是关于服务网格的详细介绍&#xff0c;…

( 基于SystemView软件)AM调制与解调仿真实验

一、实验目的&#xff1a; 熟悉使用SystemView软件&#xff0c;了解各部分功能模块的操作和使用方法。 通过实验进一步观察、了解模拟信号AM调制、解调原理。 掌握AM调制信号的主要性能指标。 比较、理解AM调制的相干解调原理。 二、实验器材&#xff1a; 装有SystemView…

【有道云-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

WLAN网络优化,还得看这三剑客!

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 晚上好&#xff0c;我的网工朋友。 WLAN网络成为了企业网络接入的主要手段之一&#xff0c;用户对于WLAN网络的体验性也有了更高的要求。 对于W…

雷达水位监测站低功耗及免维护设计

QY-15雷达水位监测站采用非接触雷达&#xff0c;无磨损无污染产品概述 雷达水位监测站是一款高精度且具有水面波动滤波处理的地表水水位测量产品。它采用喇叭天线的设计&#xff0c;降低功耗&#xff0c;宽范围的输入电压&#xff0c;专门设计于适合野外无人值守的野外自动站应…

图像噪声与被污染图像的恢复

系列文章目录 文章目录 系列文章目录前言一、图像退化模型二、图像噪声2.2 图像噪声的分类2.2.1 加性噪声2.2.2 乘性噪声 三、图像噪声的概率密度函数3.1 高斯噪声3.2 瑞利噪声3.3 均匀分布噪声3.4 脉冲噪声3.5 图像信噪比 四、图像噪声的概率密度函数 前言 数字图像常会因受一…