JavaWeb JavaScript 4.JS的对象和JSON

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

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

同理,元素也可以是对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值