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

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

如何處理文檔中不一致的json字段

如何處理文檔中不一致的json字段

Go
素胚勾勒不出你 2021-11-22 10:27:52
我目前有一個大型 JSON 文件,它必須存儲在后端(mongodb & Go)中并在前端使用。我想知道文檔的第三個字段是否應(yīng)該類似于“子類別”而不是第二個字段中的運動名稱,或者這是否可能,因為我認為這可能由于不一致而難以在后端語言中建模和反序列化?樣本:{  "_id" : ObjectId("55c"),  "Sport" : "Athletics ",  "Athletics" : {    ["Men's Individual", "Women's Individual", "Mixed Relay"]   }}{  "_id" : ObjectId("56c"),  "Sport" : "Tennis",  "Tennis" : ["Men's singles", "Women's singles", "Men's doubles", "Women's doubles", "Mixed doubles"]}{  "_id" : ObjectId("57c"),  "Sport" : "Swimming",  "Swimming" : {    "Men" : ["4×100 m relay", "4×200 m freestyle relay"],    "Women" : ["4×100 m relay", "4×200 m freestyle relay"]  }}
查看完整描述

2 回答

?
動漫人物

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

我同意小聲音告訴您使用“子類別”而不是嘗試處理不一致的類型。此外,您應(yīng)該結(jié)合游泳中的“男子”和“女子”子類別,類似于在網(wǎng)球和田徑中的做法。這將使您更好地利用 encoding/json(和 mgo/bson 的)映射功能,但我不會稱其為“后端語言”問題 - 一致的數(shù)據(jù)類型也應(yīng)該使您的 js(和其他客戶端代碼)更好!


查看完整回答
反對 回復 2021-11-22
?
犯罪嫌疑人X

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

你可以使用json.RawMessage:


package main


import (

    "encoding/json"

    "fmt"

    "log"

)


func main() {

    type Color struct {

        Space string

        Point json.RawMessage // delay parsing until we know the color space

    }

    type RGB struct {

        R uint8

        G uint8

        B uint8

    }

    type YCbCr struct {

        Y  uint8

        Cb int8

        Cr int8

    }


    var j = []byte(`[

        {"Space": "YCbCr", "Point": {"Y": 255, "Cb": 0, "Cr": -10}},

        {"Space": "RGB",   "Point": {"R": 98, "G": 218, "B": 255}}

    ]`)

    var colors []Color

    err := json.Unmarshal(j, &colors)

    if err != nil {

        log.Fatalln("error:", err)

    }


    for _, c := range colors {

        var dst interface{}

        switch c.Space {

        case "RGB":

            dst = new(RGB)

        case "YCbCr":

            dst = new(YCbCr)

        }

        err := json.Unmarshal(c.Point, dst)

        if err != nil {

            log.Fatalln("error:", err)

        }

        fmt.Println(c.Space, dst)

    }

}


查看完整回答
反對 回復 2021-11-22
  • 2 回答
  • 0 關(guān)注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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