javascript
初学JSON
一. 概念
JavaScript Object Notation?? ??? ?JavaScript對象表示法
?? ??? ?Person p = new Person();
?? ??? ?p.setName("張三");
?? ??? ?p.setAge(23);
?? ??? ?p.setGender("男");
?? ??? ?var p = {"name":"張三","age":23,"gender":"男"};
?? ??? ?* json現在多用于存儲和交換文本信息的語法
?? ??? ?* 進行數據的傳輸
?? ??? ?* JSON 比 XML 更小、更快,更易解析。? ??
二. 語法:
? ? ? ?
? ? ?2.1 基本規則
?? ??? ??? ?* 數據在名稱/值對中:json數據是由鍵值對構成的
?? ??? ??? ??? ?* 鍵用引號(單雙都行)引起來,也可以不使用引號
?? ??? ??? ??? ?* 值得取值類型:
?? ??? ??? ??? ??? ?1. 數字(整數或浮點數)
?? ??? ??? ??? ??? ?2. 字符串(在雙引號中)
?? ??? ??? ??? ??? ?3. 邏輯值(true 或 false)
?? ??? ??? ??? ??? ?4. 數組(在方括號中)?? ?{"persons":[{},{}]}
?? ??? ??? ??? ??? ?5. 對象(在花括號中) {"address":{"province":"陜西"....}}
?? ??? ??? ??? ??? ?6. null
?? ??? ??? ?* 數據由逗號分隔:多個鍵值對由逗號分隔
?? ??? ??? ?* 花括號保存對象:使用{}定義json 格式
?? ??? ??? ?* 方括號保存數組:[]
?? ??? ?2.2. 獲取數據
?? ??? ??? ?1. json對象.鍵名
?? ??? ??? ?2. json對象["鍵名"]
?? ??? ??? ?3. 數組對象[索引]
?? ??? ??? ?4. 遍歷? ? ? ? ? ? ? ?
?? ?
三. JSON數據和Java對象的相互轉換
?? ??? ?* JSON解析器:
?? ??? ??? ?* 常見的解析器:Jsonlib,Gson,fastjson,jackson
? ?
? ? ? ? 3.1. JSON轉為Java對象
?? ??? ??? ?1. 導入jackson的相關jar包
?? ??? ??? ?2. 創建Jackson核心對象 ObjectMapper
?? ??? ??? ?3. 調用ObjectMapper的相關方法進行轉換
?? ??? ??? ??? ?1. readValue(json字符串數據,Class)
? ? ? ? 3.2. Java對象轉換JSON
?? ??? ??? ?1. 使用步驟:
?? ??? ??? ??? ?1. 導入jackson的相關jar包
?? ??? ??? ??? ?2. 創建Jackson核心對象 ObjectMapper
?? ??? ??? ??? ?3. 調用ObjectMapper的相關方法進行轉換
?? ??? ??? ??? ??? ?1. 轉換方法:
?? ??? ??? ??? ??? ??? ?* writeValue(參數1,obj):
?? ??? ? ? ? ? ? ? ? ? ? ? ?參數1:
?? ??? ? ? ? ? ? ? ? ? ? ? ? ? ?File:將obj對象轉換為JSON字符串,并保存到指定的文件中
?? ??? ? ? ? ? ? ? ? ? ? ? ? ? ?Writer:將obj對象轉換為JSON字符串,并將json數據填充到字符輸出流中
?? ??? ? ? ? ? ? ? ? ? ? ? ? ? ?OutputStream:將obj對象轉換為JSON字符串,并將json數據填充到字節輸出流中
?? ??? ? ? ? ? ? ? ? ? ?* writeValueAsString(obj):將對象轉為json字符串??
?? ??? ??? ??? ??? ?2. 注解:
?? ??? ??? ??? ??? ??? ?1. @JsonIgnore:排除屬性。
?? ??? ??? ??? ??? ??? ?2. @JsonFormat:屬性值得格式化
?? ??? ??? ??? ??? ??? ??? ?* @JsonFormat(pattern = "yyyy-MM-dd")
Person類
package servlet.domain;import java.util.Date;import com.fasterxml.jackson.annotation.JsonFormat;public class Person {private String name;private int age;private String gender;@JsonFormat(pattern = "yyyy-MM-dd") //轉化成json格式時,時間格式就會轉化成好的模樣private Date birthday;public String getName() {return name;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", gender=" + gender + ", birthday=" + birthday + "]";}}JuitTest類?
package servlet.test;import java.util.Date;import org.apache.tomcat.jni.File; import org.junit.Test;import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper;import servlet.domain.Person;public class JsonTest2 {//將java對象轉化成json字符串的格式@Testpublic void test() throws Exception {//1.創建java對象Person persons=new Person();persons.setName("xucc");persons.setAge(26);persons.setGender("男");persons.setBirthday(new Date());//2.創建Json的核心對象 ObjectMapperObjectMapper oMapper=new ObjectMapper();//3.轉換/* 轉換方法:* writeValue(參數1,obj)* 參數1:* File: 將obj對象轉換成json格式的字符串,并保存到指定的文件中* Writer: 將obj對象轉換成json格式的字符串,并將json數據填充到字符輸出流中* outputStream: 將obj對象轉換成json格式的字符串,并將json數據填充到字節輸出流中* * writeValueAsString(obj) :將obj對象直接轉換成json格式的字符串輸出,返回的是json格式的字符串* */String jsonString=oMapper.writeValueAsString(persons);System.out.println(jsonString);//將obj對象轉換為JSON字符串,并保存到指定的文件中//oMapper.writeValue(new java.io.File("F://d.txt"), persons);} }?? ??? ??? ??? ??? ?3. 復雜java對象轉換
?? ??? ??? ??? ??? ??? ?1. List:數組
?? ??? ??? ??? ??? ??? ?2. Map:對象格式一致
總結
- 上一篇: 初学Ajax相关知识
- 下一篇: .net label在父容器中占两行显示