首頁 > 後端開發 > Golang > golang 修改json

golang 修改json

PHPz
發布: 2023-05-21 14:31:12
原創
693 人瀏覽過

Go語言(Golang)是一門類似C語言的程式語言,主要用於開發高效且可靠的程式設計應用程式。相較於其他程式語言,Golang的優勢包括效能高、開發效率高、並發高、錯誤處理能力強等特性。在實際開發中,我們經常需要對JSON格式的資料進行操作,本文將介紹如何使用Golang修改JSON格式的資料。

一、JSON簡介

JSON全稱為JavaScript Object Notation,它是一種輕量級的資料交換格式。它是基於JavaScript語言標準(ECMA-262第3版,1999年12月)的子集。由於JSON格式的規範和易讀性,它被廣泛應用於Web應用程式中。

二、Golang中使用JSON

在Golang中,我們可以使用encoding/json套件來處理JSON格式。這個套件提供了Marshal、Unmarshal、NewEncoder、NewDecoder等函數,可以實現JSON的解析與產生運算。

  1. 解析JSON

解析JSON通常使用json.Unmarshal()函數。假設我們有如下JSON字串:

{
    "name": "Tom",
    "age": 18,
    "gender": "male",
    "score": [88, 90, 95]
}
登入後複製
登入後複製

我們可以定義如下結構體來表示JSON資料:

type Student struct {
    Name   string  `json:"name"`
    Age    int     `json:"age"`
    Gender string  `json:"gender"`
    Score  []int   `json:"score"`
}
登入後複製
登入後複製

使用Unmarshal()函數將JSON字串解析成Student結構體:

var str = `{
    "name": "Tom",
    "age": 18,
    "gender": "male",
    "score": [88, 90, 95]
}`
var std Student
err := json.Unmarshal([]byte(str), &std)
if err != nil {
    panic(err.Error())
}
fmt.Println(std.Name, std.Age, std.Gender, std.Score)
登入後複製

運行後輸出:

Tom 18 male [88 90 95]
登入後複製
  1. 產生JSON

#產生JSON通常使用json.Marshal()函數。我們可以定義一個結構體Student:

type Student struct {
    Name   string  `json:"name"`
    Age    int     `json:"age"`
    Gender string  `json:"gender"`
    Score  []int   `json:"score"`
}
登入後複製
登入後複製

在將結構體轉換為JSON字串:

std := Student{
    Name:   "Tom",
    Age:    18,
    Gender: "male",
    Score:  []int{88, 90, 95},
}
result, err := json.Marshal(std)
if err != nil {
    panic(err.Error())
}
fmt.Println(string(result))
登入後複製

輸出:

{"name":"Tom","age":18,"gender":"male","score":[88,90,95]}
登入後複製

三、修改JSON

#在Golang中,我們可以使用一些簡單的方式來修改JSON格式的資料。假設我們有如下JSON資料:

{
    "name": "Tom",
    "age": 18,
    "gender": "male",
    "score": [88, 90, 95]
}
登入後複製
登入後複製

我們可以先使用Unmarshal()函數將JSON字串解析成Map格式:

var str = `{
    "name": "Tom",
    "age": 18,
    "gender": "male",
    "score": [88, 90, 95]
}`
var data map[string]interface{}
err := json.Unmarshal([]byte(str), &data)
if err != nil {
    panic(err.Error())
}
登入後複製

接下來我們可以修改data中的某個值:

data["score"] = []int{99, 98, 97}
登入後複製

最後,使用Marshal()函數將Map轉換為JSON字串:

result, err := json.Marshal(data)
if err != nil {
    panic(err.Error())
}
fmt.Println(string(result))
登入後複製

輸出:

{"age":18,"gender":"male","name":"Tom","score":[99,98,97]}
登入後複製

我們也可以使用struct來對JSON進行修改:

type Student struct {
    Name   string  `json:"name"`
    Age    int     `json:"age"`
    Gender string  `json:"gender"`
    Score  []int   `json:"score"`
}

var str = `{
    "name": "Tom",
    "age": 18,
    "gender": "male",
    "score": [88, 90, 95]
}`
var std Student
err := json.Unmarshal([]byte(str), &std)
if err != nil {
    panic(err.Error())
}

std.Score = []int{99, 98, 97}

result, err := json.Marshal(std)
if err != nil {
    panic(err.Error())
}
fmt.Println(string(result))
登入後複製

輸出:

{"name":"Tom","age":18,"gender":"male","score":[99,98,97]}
登入後複製

四、總結

本文主要介紹了Golang中處理JSON格式的方法,包括解析JSON、產生JSON、修改JSON等。 JSON資料格式是一種輕量級且易讀的資料交換格式,Golang透過encoding/json套件提供了強大的支援。在實際開發中,我們應該根據需要選擇不同的操作方法,以提高程式的效率和可維護性。

以上是golang 修改json的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板