json の完全名は Javascript object notation で、中国語の完全名は js object notation です。シリアル化および逆シリアル化プロトコルには、json、xml、yaml、プロトコル バッファーなどがあります。このうち、フロントエンドおよびバックエンド API の契約データの主な送信形式は json です。 json は、数値、ブール値、配列、オブジェクトの 4 つのデータ型をサポートしています。これら 4 つのデータ型を使用して、複雑なデータ モデルを構築できます。 |
ここでは、json の使用法を説明するために 3 つの例を示します。初心者の場合、データの送受信に 1 つの構造体オブジェクトのみを使用することが多いかもしれません。以下に具体的な例を見てみましょう。 1. 構造体オブジェクトを使用してデータを受信します。 「」 type 人の構造体 { 名前文字列 `json:"name"` 年齢 int `json:"age"` } 関数 main() { データ := `{"名前": "アリス", "年齢": 25}` var p 人 err := json.Unmarshal([]byte(data), &p) エラーの場合 != nil { fmt.Println("json の解析に失敗しました:"、エラー) 戻る
###構造###
タイプ パーソン構造体 { 名前文字列 `json:"name"` 年齢 int `json:"age"`
}<br>
<br><br>
func main() {
var (
新しい1人あたり
bts []バイト<br>
)<br>
per:=人{<br>
名前:「リリー」、<br>
年齢: 29,<br>
}<br>
// シリアル化<br>
bts の場合、err = json.Marshal(per); err !=nil{<br>
log.Fatal(err.Error())<br>
戻る###
}<br><br>
<br><br>
if err = json.Unmarshal(bts, &newPer); err !=nil{<br>
log.Fatal(err.Error())
戻る###
}
fmt.Println(newPer)
}<br><br>
###地図###
<br><br>関数メイン() {<br>
var (<br>
smap = マップ[文字列]int{
「年齢」: 28,
newSmap = make(map[string]int)
bts []バイト<br>
)<br>
bts の場合、err = json.Marshal(smap); err !=nil {<br>
log.Fatal(err.Error())<br>
戻る###
}<br>
if err = json.Umarshal(bts, &newSmap); err !=nil {<br>
log.Fatal(err.Error())<br>
戻る###
}<br>
fmt.Println(newSmap)<br>
}<br><br>
<br>配列またはスライス動的配列<br>
<br><br>関数メイン() {<br>
var (<br>
年齢 []int = []int{23, 20, 28, 25, 30}<br>
bts []バイト<br>
エラーエラー
newAges = make([]int, len(ages))
戻る###
}
if err = json.Unmarshal(bts, &newAges); err != nil {<br>
fmt.Println(err.Error())<br>
戻る###
}<br>
fmt.Println("新しい時代: ", newAges)<br>
戻る###
}<br><br>
初心者は、構造の json シリアル化と逆シリアル化については比較的明確ですが、後者の 2 つはめったに使用しない、またはまったく使用しない可能性があります。 <br>
<br>
<br>配列型データの場合、一部のビジネス シナリオのフロントエンドで使用されます。 <br>
<br>マップ タイプの場合、サードパーティ REST インターフェイスが Go 言語サーバーで呼び出されるとき、サーバーは呼び出しが成功したかどうかを判断するために指定された戻りコードのみを必要とします。プログラマは構造体全体の定義を書きたくなかったか、あるいは怠け者だったので、戻りデータを受け取るために map[string]interface{} を使用しました。このとき、json標準ライブラリのUnmarshalでデシリアライズした後、map["err_code"].(int)でリターンコードを取得し、その後のその他の処理ロジックを実行します。 <br>
<br>
<br> ここでは、構造体を使用するときに時々使用する機能についても説明する必要があります。構造体の JSON でサポートされているタグ値機能は、空を省略しています。例: <br>
<br>タイプ パーソン構造体 {<br>
名前文字列 `json:"name,omitempty"`
年齢 int `json:"age"`
}
OpenFermion ダウンロード アドレス: クリックしてダウンロード
<br>
この記事はオープンソースチャイナコミュニティ[http://www.oschina.net]からの転載です。
以上がjsonデータのシリアル化と逆シリアル化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。