首頁  >  文章  >  後端開發  >  Golang:在 JSON 集合回應中僅取得一個對象

Golang:在 JSON 集合回應中僅取得一個對象

WBOY
WBOY轉載
2024-02-15 12:54:09336瀏覽

Golang:在 JSON 集合响应中仅获取一个对象

php小編香蕉為你帶來了關於Golang在JSON集合回應中只取得一個物件的介紹。在處理JSON資料時,有時候我們只需要取得其中一個物件而不是整個集合,這時候可以採用一些簡單的方法來實作。本文將為你詳細介紹如何使用Golang來實現這項需求,讓你能夠更有彈性地處理JSON資料。無論你是初學者或有一定經驗的開發者,都能從本文中獲得實用的技巧和方法。讓我們一起來探索吧!

問題內容

假設我有一個如下所示的 json 回應正文:

{
   value: [{object a's key-values}, {object b's key-values}, {object c's key-values} ...]
}

其中物件 a、b、c 具有不同的結構,儘管它們可能具有相同的鍵名稱。 (例如,obj a 和 b 都可以具有密鑰“b”,但只有 obj a 具有密鑰“a”)

我只對 json 回應中的物件 a 感興趣,其餘的可以丟棄。如果我有這樣的結構:

type MyObject struct{
    a string
    b string
}

type MyData struct{
   value []MyObject
}

將回應解組到 mydata 是否有效?我們是否可以指定特定類型的切片,以便僅對具有正確結構的所需元素進行解組,而忽略 json 集合中的其餘物件?

解決方法

首先:您需要匯出結構成員:

type myobject struct{
    a string `json:"a"`
    b string `json:"b"`
}
type mydata struct{
   value []myobject `json:"value"`
}

然後,您可以使用以下方法解組數組:

var v mydata
json.unmarshal(input,&v)

這將為輸入中的每個陣列元素建立一個 myobject 實例,但只有那些具有 ab 欄位的元素才會被填入。因此,您可以過濾包含 a 的:

for _,x:=range v.Values {
   if x.A!="" {
     ///
   }
}

以上是Golang:在 JSON 集合回應中僅取得一個對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除