1 概念:JavaScript Object Notation JavaScript对象表示法
var p={"name":"张三","age":23,"gender":"男"};
json现在多用于存储和交换文本信息的语法
进行数据的传输
json比xml更小、更快、更易解析
2 语法:
1 基本规则
数据在名称/值对中:json数据是由键值对构成的
* 键用引号引起来,也可以不使用
* 值的取值类型
数字(正数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在方括号中)
对象(在花括号中)
null
数据由逗号分隔:多个键值对由逗号分隔
花括号保存对象:使用{}定义json格式
方括号保存数组:[]
2 获取数据:
1 json对象.键名
2 json对象["键名"]
3 数组对象[索引]
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script> //1 定义基本格式 var person = { "name" : "zhangsan", "age" : "23", "gender" : "true" }; var name=person.name; var name=person["name"]; //alert(name); //alert(person); //2 嵌套格式 {}--->[] var people = { "people" : [ { "name" : "zhangsan", "age" : "23", "gender" : "true" }, { "name" : "lisi", "age" : "24", "gender" : "true" }, { "name" : "wangwu", "age" : "25", "gender" : "true" } ] }; var name=people.people[2].name; //alert(name); //alert(people); //2 嵌套格式 []--->{} var peo=[{ "name" : "zhangsan", "age" : "23", "gender" : "true" }, { "name" : "lisi", "age" : "24", "gender" : "true" }, { "name" : "wangwu", "age" : "25", "gender" : "true" } ]; var name=peo[1].name; alert(name); //alert(peo); </script> </head> <body> </body> </html>
3 JSON和Java对象的相互转换
* JSON解析器
常见的解析器:Jsonlib,Gson,fastjson,jackson
1 JSON转为Java对象
1 使用步骤
1 导入jackson的相关jar包
2 创建Jackson核心对象 ObjectMapper
3 调用ObjectMapper的相关方法进行转换
readValue(json字符串数据,Class)
2 Java对象转换JSON
1 使用步骤
1 导入jackson的相关jar包
2 创建Jackson核心对象 ObjectMapper
3 调用ObjectMapper的相关方法进行转换
2 注解:
1 @JsonIgnore:排除属性
2 @JsonFormat:属性值的格式化
3 复杂Java对象转换
1 List:数组
2 Map:对象格式一致
package test; import java.util.ArrayList; import java.util.List; import org.junit.Test; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import domain.person; public class Jackson { //java对象转换为json字符串 @Test public void test1() throws JsonProcessingException { //创建person对象 person p=new person(); p.setName("zhangsan"); p.setAge(23); p.setGender("男"); //创建Jackson的核心对象ObjectMapper ObjectMapper mapper=new ObjectMapper(); //转换 /* 转换方法: writevalue(参数1,obj) 参数1: File:将obj对象转换为json字符串,并保存到指定的文件中 Writer:将obj对象转换为json字符串,并将json数据填充到字符输出流中 OutputStream:将obj对象转换为json字符串,并将json数据填充到字节输出流中 writeValueAsString(obj):将对象转换为json字符串 */ String s=mapper.writeValueAsString(p); //System.out.println(s); } @Test public void test2() throws JsonProcessingException { //创建person对象 person p=new person(); p.setName("zhangsan"); p.setAge(23); p.setGender("男"); person p1=new person(); p1.setName("lisi"); p1.setAge(24); p1.setGender("男"); person p2=new person(); p2.setName("wangwu"); p2.setAge(25); p2.setGender("男"); List<person> peo=new ArrayList<person>(); peo.add(p); peo.add(p1); peo.add(p2); //创建Jackson的核心对象ObjectMapper ObjectMapper mapper=new ObjectMapper(); //转换 String s=mapper.writeValueAsString(peo); System.out.println(s); } }