1. 程式人生 > 程式設計 >Java如何為 PPT 中的圖形新增陰影效果

Java如何為 PPT 中的圖形新增陰影效果

1、解析時,結構體的Tag使用

tag就是標籤,給結構體的每個欄位打上一個標籤,標籤冒號前是型別,後面是標籤名;

- json解析時用 json,同時注意bson,bson用於mongdb的儲存解析

-omitempty,可以在序列化的時候忽略0值或者空值

-type,在序列化或者反序列化的時候,可能結構體型別和需要的型別不一致,這個時候可以指定型別,支援string,number和boolean

 1 package main
 2 
 3 import (
 4     "encoding/json"
 5     "fmt"
 6 )
 7 
 8 
 9 type Product struct
{ 10 Name string `json:"name"` 11 ProductID int64 `json:"-"` // 該欄位不進行序列化 12 Number int `json:"number"` 13 Price float64 `json:"price,omitempty"` //忽略0值或空值 14 IsOnSale bool `json:"is_on_sale,string"` //設定轉化的type 支援string,number和boolean 15 } 16 17 18 func main() {
19 20 21 var data = `{"name":"Xiao mi","product_id":"10","number":10000,"price":0,"is_on_sale":"true"}` 22 p := &Product{} 23 err := json.Unmarshal([]byte(data), p) 24 fmt.Println(err) 25 fmt.Println(*p) 26 Serialization,_ := json.Marshal(p) 27 fmt.Println(string(Serialization))
28 29 }

2、自定義解析,常用於定製化校驗

- gin 框架中,ShouBindJson也有類似功能,可直接定義tag,或自定義解析

 1 package main
 2 
 3 import (
 4     "encoding/json"
 5     "errors"
 6     "fmt"
 7 )
 8 
 9 type Marshaler interface {
10     MarshalJSON() ([]byte, error)
11 }
12 type Unmarshaler interface {
13     UnmarshalJSON() ([]byte, error)
14 }
15 
16 //實現以上介面,介面的方法只是對結構體欄位的值做處理。
17 // 在序列化與反序列化時json.Marshal和json.Unmarshal,會進行呼叫,可以理解為攔截器
18 //即在序列化和反序列化前增加額外邏輯
19 
20 type Phone struct {
21     Number string
22 }
23 
24 
25 func (p Phone) MarshalJSON() ([]byte, error) {
26     //檢查
27     if len(p.Number) != 11 {
28         return nil,errors.New("not fit rule")
29     }
30     for _,v := range p.Number {
31         if v > '9' || v < '0'{
32             return nil,errors.New("Contains non-digits")
33         }
34     }
35     //注意只是對欄位值處理
36     return json.Marshal(p.Number)
37 }
38 
39 
40 
41 func main() {
42     phone := Phone{"1980987578"}
43     phoneJsson,err := json.Marshal(phone)
44     fmt.Println(string(phoneJsson),err)
45 }