JavaWeb JavaScript ④ JS的对象和JSON

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

------ 24.8.26

一、JS创建对象

语法

方式1 new Object()

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

方式3 Object.create()

html 复制代码
<!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的语法:

javascript 复制代码
var personStr = '{"属性名":"属性值"}'

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

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

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

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

JSON在客户端的使用

代码:

javascript 复制代码
<!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类

java 复制代码
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类

java 复制代码
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;
    }
}

测试类

java 复制代码
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对象

java 复制代码
    // 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对象

java 复制代码
    // 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数组

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

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

同理,元素也可以是对象

相关推荐
wenxin-4 分钟前
NS3网络模拟器中如何利用Gnuplot工具像MATLAB一样绘制各类图形?
开发语言·matlab·画图·ns3·lr-wpan
数据小爬虫@2 小时前
深入解析:使用 Python 爬虫获取苏宁商品详情
开发语言·爬虫·python
健胃消食片片片片2 小时前
Python爬虫技术:高效数据收集与深度挖掘
开发语言·爬虫·python
王老师青少年编程3 小时前
gesp(C++五级)(14)洛谷:B4071:[GESP202412 五级] 武器强化
开发语言·c++·算法·gesp·csp·信奥赛
一只小bit4 小时前
C++之初识模版
开发语言·c++
王磊鑫5 小时前
C语言小项目——通讯录
c语言·开发语言
钢铁男儿5 小时前
C# 委托和事件(事件)
开发语言·c#
Ai 编码助手5 小时前
在 Go 语言中如何高效地处理集合
开发语言·后端·golang
喜-喜5 小时前
C# HTTP/HTTPS 请求测试小工具
开发语言·http·c#
ℳ₯㎕ddzོꦿ࿐5 小时前
解决Python 在 Flask 开发模式下定时任务启动两次的问题
开发语言·python·flask