本文目錄一覽:
golang x509的Certificate.Verify函數
周末在家無趣,研究了一個golang裡面的Certificate.Verify函數。
golang的官方定義在這裡:
函數原型聲明如下:
func (c Certificate) Verify(opts VerifyOptions) (chains [][] Certificate, err error)
其中:
這個函數的功能是:
Verify attempts to verify c by building one or more chains from c to a certificate in opts.Roots, using certificates in opts.Intermediates if needed. If successful, it returns one or more chains where the first element of the chain is c and the last element is from opts.Roots.
If opts.Roots is nil and system roots are unavailable the returned error will be of type SystemRootsError.
解釋一下就是:
舉一個例子:
假設存在證書鏈簽出關係:C1 – C2 – C3 – C4,即C1簽出C2,C2簽出C3,C3簽出C4;現在使用函數:
我們根據Intermediates和Roots的值不同,比較輸出結果:
Golang解析json的特殊情況處理
Go解析json遇到了大數字、不定格式等特殊情況,在此做了一個整理。
選擇哪個要視輸入而定。
json.Unmarshal 操作對象是一個 []byte ,也就意味著被處理的JSON要全部載入到內存。如果有一個載入完的JSON使用 json.Unmarshal 會快一些。
json.Decoder 操作的是一個 stream ,或者其他實現了 io.Reader 介面的類型。意味著可以在接收或傳輸的同時對其進行解析。當處理一組較大數據時無需重新copy整個JSON到內存中。
最好的選擇辦法如下:
默認情況下,go對json解析過程中遇到的數字都會當做float64處理。如果數字過大會有精度丟失。可以使用json.Number來處理。
輸出結果:
使用 json.Decoder 只能操作 io.Reader 類型的JSON數據。
有時候遇到欄位不定的JSON,需要一邊判斷一邊解析。如:
可以先統一解組到interface{} 然後判斷關鍵欄位再進行後續處理。
結果
使用RawMessage便於分步Unmarshal
原文鏈接
golang生成JSON及解析JSON
一、JSON解析到結構體
在介紹這部分之前先簡要介紹一下Json語法
JSON 語法是 JavaScript 語法的子集。JSON 語法是 JavaScript 對象表示法語法的子集。
數據在名稱/值對中
數據由逗號分隔
大括弧保存對象
中括弧保存數組
1.JSON名稱/值對
2.JSON值
可以是:
JSON數據
JSON 數字可以是整型或者浮點型
JSON對象
JSON 對象在大括弧({})中書寫:
對象可以包含多個名稱/值對:
JSON數組
JSON 數組在中括弧中書寫:
數組可包含多個對象:
JSON布爾值
二、JSON轉map
輸出結果:
三、生成JSON
本文來自php中文網的 golang教程 欄目:
原創文章,作者:OTFU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134763.html