java學習之JSON
阿新 • • 發佈:2022-05-27
0X00前言
JSON可以說是javascript的一種資料型別,我們學習JSON是為了在客戶端的資料給讀取出來,官方的解釋是:概述:JSON(JavaScript Object Notation, JS 物件簡譜) 是一種輕量級的資料交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效
0x01基礎使用
(1).概念:javaScript Object Notation javaScript物件表示法
(2).例項:
var p={"name":"張三“,"age":"23",""gender:"男"}
*json現在多用於儲存和交換文字資訊的語法
*進行資料傳輸
*JSON比XML更小、更快、更容易解析。
(3).語法:
- 資料在名稱/值對中:json資料是由鍵值對構成的
- 數字(整數或者浮點數)
- 字串(雙引號裡面)
- 邏輯值(true or flase)
- 陣列(方括裡面){"people":[{},{}]}
- 物件 (花括號裡面){"address":{"province:"山西"}}
- 鍵用引號(單雙都可以)引起來,也可以不使用
- 資料用逗號分割 多個鍵值對之間用逗號隔開
- 花括號儲存物件
- 方括號儲存資料
0x02使用程式碼
0x1JSON格式
- JSON的格式是多變的,具有很多種巢狀方式,陣列巢狀鍵值對,鍵值對巢狀陣列
- 不同的格式具有在不同場景的實用性
<script> var person={name:"張三",age:23,gnder:true}; //alert(person);//巢狀 var persons={person:[{name:"張三",age:23,gnder:true}, {name:"鍾三",age:23,gnder:true}, {name:"王四",age:65,gender:false} ] } var ps=[{name:"張三",age:23,gnder:true}, {name:"鍾三",age:23,gnder:true}, {name:"王四",age:65,gender:false}] </script>
0x2獲取JSON物件
-
json物件.鍵名
-
json物件["鍵名"](這個要加雙引號)
-
陣列用索引下標
看一下簡單的js程式碼
<script>
var person={name:"張三",age:23,gnder:true};
//alert(person);//巢狀
var persons={person:[
{name:"張三",age:23,gender:true},
{name:"鍾三",age:23,gender:true},
{name:"王四",age:65,gender:false}]
}
var ps=[{name:"張三",age:23,gender:true},
{name:"鍾三",age:23,gender:true},
{name:"王四",age:65,gender:false}]
var name=person.name
var person1 = persons.person[1].name;
for (var ket in person){
alert(person[ket])//拿到的是鍵名name,age,gender
}
//獲取ps中所有的值
for (var i=0;i<ps.length;i++){
var p=ps[i];
for (var key in p){
alert(key+":"+p[key]);
}
}
</script>
0x03Java物件轉化成json物件
JSON解析器:Jackson
轉化方法:wirteValue(引數1,obj);
引數1:
File 將obj物件轉化為JSON字串,並儲存到指定檔案中
Writer:將obj物件轉化成JSON字串,並將json資料填充到字元輸出流裡面
OutputStream:將obj物件轉化成json字串,並填充到位元組輸出流
Writer
writeValueAsString :物件轉化成json
程式碼使用
person物件和前面的物件一樣三個鍵值對,name、age、gender
@Test
public void test() throws IOException {
Person person = new Person();
person.setAge(23);
person.setGender(true);
person.setName("張無");
//建立jackson的核心物件 ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
String s = objectMapper.writeValueAsString(person);
System.out.println(s);
objectMapper.writeValue(new File("c://testdemo1.txt"),person);
}}
有些時候屬性我們會不想要某些屬性被js判斷出來,可以採用註解的方式去@JacksonInject//忽略該屬性,這樣就不會被輸出出來
或者通過 @JsonFormat(pattern = "yyyy-MM-dd")去修改屬性格式。
Person類
public class Person {
private String name;
private int age;
private boolean gender;
@JsonIgnore
private String grifrind;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;
public String getGrifrind() {
return grifrind;
}
public void setGrifrind(String grifrind) {
this.grifrind = grifrind;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isGender() {
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
'}';
}
0x04Json轉換成Java物件
-
轉換方法:writeValue(引數1,obj)
-
把字串傳入readValue函式,然後確定返回的物件類。
public class JSONdemo2 { @Test public void test() throws IOException { String json="{\"name\":\"鍾三\",\"age\":44,\"gender\":false,\"birthday\":\"2022-05-27\"}]"; //建立ObjectMapper ObjectMapper objectMapper = new ObjectMapper(); Person person = objectMapper.readValue(json, Person.class); System.out.println(person); } }
0x05總結
繼續衝啊,內容很簡單就是一些資料互動,馬上就要進入框架的學習了準備沉澱一下。