只要你的风格是适应客观规律的,那你以后会越来越好,做事情会越来越顺利
—— 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); }
复制
同理,元素也可以是对象