第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 golang 中沒(méi)有結(jié)構(gòu)的情況下對(duì) JSON 數(shù)據(jù)進(jìn)行最小的修改

在 golang 中沒(méi)有結(jié)構(gòu)的情況下對(duì) JSON 數(shù)據(jù)進(jìn)行最小的修改

Go
慕桂英3389331 2021-12-13 18:43:14
我有一個(gè) JSON 格式的 solr 響應(yīng),如下所示: {  "responseHeader": {    "status": 0,    "QTime": 0,    "params": {      "q": "solo",      "wt": "json"    }  },  "response": {    "numFound": 2,    "start": 0,    "docs": [      {          <Large nested JSON element>      },      {          <Large nested JSON element>      }    ]  }}現(xiàn)在,在我的 Golang 應(yīng)用程序中,我想快速刪除“responseHeader”,以便我可以單獨(dú)返回“response”。如何在不創(chuàng)建大型結(jié)構(gòu)的情況下做到這一點(diǎn)?編輯 1evanmcdonnal 的答案是這個(gè)問(wèn)題的解決方案,但它有一些小的錯(cuò)別字,這是我最終使用的:var temp map[string]interface{}if err := json.Unmarshal(body, &temp); err != nil {    panic(err.Error())}result, err := json.Marshal(temp["response"])
查看完整描述

2 回答

?
夢(mèng)里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

這是一個(gè)非常簡(jiǎn)短的示例,說(shuō)明如何快速輕松地執(zhí)行此操作。步驟是; 解組到通用map[string]interface{}然后,假設(shè)沒(méi)有錯(cuò)誤,只編組你想要的內(nèi)部對(duì)象。


var temp := &map[string]interface{}


if err := json.Unmarshal(input, temp); err != nil {

     return err;

}


return json.Marshal(temp["response"])


查看完整回答
反對(duì) 回復(fù) 2021-12-13
?
三國(guó)紛爭(zhēng)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

我編寫了一個(gè)包μjson來(lái)做到這一點(diǎn):在 JSON 文檔上執(zhí)行通用轉(zhuǎn)換而不解組它們。


input := []byte(`

{

  "responseHeader": {

    "status": 0,

    "QTime": 0,

    "params": {

      "q": "solo",

      "wt": "json"

    }

  },

  "response": {

    "numFound": 2,

    "start": 0,

    "docs": [

      { "name": "foo" },

      { "name": "bar" }

    ]

  }

}`)


blacklistFields := [][]byte{

    []byte(`"responseHeader"`), // note the quotes

}

b := make([]byte, 0, 1024)

err := ujson.Walk(input, func(_ int, key, value []byte) bool {

    for _, blacklist := range blacklistFields {

        if bytes.Equal(key, blacklist) {

            // remove the key and value from the output

            return false

        }

    }


    // write to output

    if len(b) != 0 && ujson.ShouldAddComma(value, b[len(b)-1]) {

        b = append(b, ',')

    }

    if len(key) > 0 {

        b = append(b, key...)

        b = append(b, ':')

    }

    b = append(b, value...)

    return true

})

if err != nil {

    panic(err)

}

fmt.Printf("%s", b)

// Output: {"response":{"numFound":2,"start":0,"docs":[{"name":"foo"},{"name":"bar"}]}}

您可以在博客文章中閱讀更多相關(guān)信息。我把答案放在這里以防其他人可能需要它。


查看完整回答
反對(duì) 回復(fù) 2021-12-13
  • 2 回答
  • 0 關(guān)注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)