首頁 > 後端開發 > Golang > 主體

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

WBOY
發布: 2024-02-15 12:54:09
轉載
386 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板