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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以循環(huán)一些帶有嵌套值的數(shù)據(jù) json

我可以循環(huán)一些帶有嵌套值的數(shù)據(jù) json

Go
素胚勾勒不出你 2023-07-26 16:42:53
當我獲得新的數(shù)據(jù) json ORDER_TRX_H_ID 時,結果必須使用新的 ORDER_TRX_H_ID 循環(huán),但我的結果始終顯示最后的數(shù)據(jù)。我的代碼是package mainimport (    "encoding/json"    "fmt")func main() {    dataJSON := `[{    "QUICK_DATA_H_ID": "1",    "ORDER_TRX_H_ID": "1",    "FIELD_QUESTION": "FULLNAME",    "FIELD_ANSWER": "RUBEN",    "DTM_CRT": "2019-08-28T16:25:15.757Z"},{    "QUICK_DATA_H_ID": "2",    "ORDER_TRX_H_ID": "1",    "FIELD_QUESTION": "ALAMAT_KTP",    "FIELD_ANSWER": "jalandisana",    "DTM_CRT": "2019-08-28T16:25:15.757Z"},{    "QUICK_DATA_H_ID": "3",    "ORDER_TRX_H_ID": "2",    "FIELD_QUESTION": "FULLNAME",    "FIELD_ANSWER": "Fariz",    "DTM_CRT": "2019-08-28T16:25:15.757Z"},{    "QUICK_DATA_H_ID": "4",    "ORDER_TRX_H_ID": "2",    "FIELD_QUESTION": "ALAMAT_KTP",    "FIELD_ANSWER": "Bogor",    "DTM_CRT": "2019-08-28T16:25:15.757Z"}    ]`    var data []map[string]interface{}    json.Unmarshal([]byte(dataJSON), &data)    qa := map[string]interface{}{}    for _, v := range data {        qa[v["FIELD_QUESTION"].(string)] = v["FIELD_ANSWER"]    }    hasil := data[0]    hasil["QUESTION"] = qa    delete(hasil, "FIELD_QUESTION")    delete(hasil, "FIELD_ANSWER")    hasilJSON, _ := json.MarshalIndent(hasil, "", "  ")    fmt.Println(string(hasilJSON))}您可以運行我的代碼 https://play.golang.org/p/aHUoYZlEQs4我的結果總是顯示最后的數(shù)據(jù){  "DTM_CRT": "2019-08-28T16:25:15.757Z",  "ORDER_TRX_H_ID": "1",  "QUESTION": {    "ALAMAT_KTP": "Bogor",    "FULLNAME": "Fariz"  },  "QUICK_DATA_H_ID": "1"}我的預期結果{  "DTM_CRT": "2019-08-28T16:25:15.757Z",  "ORDER_TRX_H_ID": "1",  "QUESTION": {    "ALAMAT_KTP": "jalandisana",    "FULLNAME": "RUBEN"  },  "QUICK_DATA_H_ID": "1"},{  "DTM_CRT": "2019-08-28T16:25:15.757Z",  "ORDER_TRX_H_ID": "2",  "QUESTION": {    "ALAMAT_KTP": "Bogor",    "FULLNAME": "Fariz"  },  "QUICK_DATA_H_ID": "2"}
查看完整描述

1 回答

?
縹緲止盈

TA貢獻2041條經(jīng)驗 獲得超4個贊

為什么你的結果只顯示1個數(shù)據(jù)?是因為這行代碼:


hasil := data[0]

hasil總是只有一個元素


也qa將只包含這樣的值:


{

  "ALAMAT_KTP": "BOGOR",

  "FULLNAME": "Fariz"

}

因為每次data迭代,qa[v["FIELD_QUESTION"].(string)]由于v["FIELD_QUESTION"].(string)不唯一,都會被替換,所以在 的第 3 次迭代中data,qa["ALAMAT_KTP]已經(jīng)有值的"jalandisana"被替換為qa["ALAMAT_KTP] = "Bogor"


我在這里修改了您的代碼:https ://play.golang.org/p/Ca4aGPGJwT7


我用2個map[string]map[string]interface{}來容納qa,modified data 然后我將它們合二為一


package main


import (

    "encoding/json"

    "fmt"

)


func main() {

    dataJSON := `[

        {

            "QUICK_DATA_H_ID": "1",

            "ORDER_TRX_H_ID": "1",

            "FIELD_QUESTION": "FULLNAME",

            "FIELD_ANSWER": "RUBEN",

            "DTM_CRT": "2019-08-28T16:25:15.757Z"

        },

        {

            "QUICK_DATA_H_ID": "2",

            "ORDER_TRX_H_ID": "1",

            "FIELD_QUESTION": "ALAMAT_KTP",

            "FIELD_ANSWER": "jalandisana",

            "DTM_CRT": "2019-08-28T16:25:15.757Z"

        },

        {

            "QUICK_DATA_H_ID": "3",

            "ORDER_TRX_H_ID": "2",

            "FIELD_QUESTION": "FULLNAME",

            "FIELD_ANSWER": "Fariz",

            "DTM_CRT": "2019-08-28T16:25:15.757Z"

        },

        {

            "QUICK_DATA_H_ID": "4",

            "ORDER_TRX_H_ID": "2",

            "FIELD_QUESTION": "ALAMAT_KTP",

            "FIELD_ANSWER": "Bogor",

            "DTM_CRT": "2019-08-28T16:25:15.757Z"

        }

    ]`


    var data, finalResult []map[string]interface{}

    json.Unmarshal([]byte(dataJSON), &data)


    qa := map[string]map[string]interface{}{}

    res := map[string]map[string]interface{}{}


    for _, v := range data {

        if qa[v["ORDER_TRX_H_ID"].(string)] == nil {

            // initialize the map first if map is nil

            qa[v["ORDER_TRX_H_ID"].(string)] = make(map[string]interface{})

        }

        qa[v["ORDER_TRX_H_ID"].(string)][v["FIELD_QUESTION"].(string)] = v["FIELD_ANSWER"]


        delete(v, "FIELD_QUESTION")

        delete(v, "FIELD_ANSWER")


        // only assign res if res[key] is nil to prevent doubled data

        if res[v["ORDER_TRX_H_ID"].(string)] == nil {

            res[v["ORDER_TRX_H_ID"].(string)] = v

        }

    }


    // combine qa and res in finalResult

    for k, v := range res {

        v["QUESTION"] = qa[k]

        finalResult = append(finalResult, v)

    }


    hasilJSON, _ := json.MarshalIndent(finalResult, "", "  ")


    fmt.Println(string(hasilJSON))

}

輸出:


[

  {

    "DTM_CRT": "2019-08-28T16:25:15.757Z",

    "ORDER_TRX_H_ID": "1",

    "QUESTION": {

      "ALAMAT_KTP": "jalandisana",

      "FULLNAME": "RUBEN"

    },

    "QUICK_DATA_H_ID": "1"

  },

  {

    "DTM_CRT": "2019-08-28T16:25:15.757Z",

    "ORDER_TRX_H_ID": "2",

    "QUESTION": {

      "ALAMAT_KTP": "Bogor",

      "FULLNAME": "Fariz"

    },

    "QUICK_DATA_H_ID": "3"

  }

]


查看完整回答
反對 回復 2023-07-26
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號