sql >> Database >  >> NoSQL >> MongoDB

Hoe bson effectief naar json te converteren met mongo-go-driver?

Als u de structuur van uw BSON kent, kunt u een aangepast type maken dat de json.Marshaler implementeert en json.Unmarshaler interfaces en behandelt NaN zoals u dat wilt. Voorbeeld:

type maybeNaN struct{
    isNan  bool
    number float64
}

func (n maybeNaN) MarshalJSON() ([]byte, error) {
    if n.isNan {
        return []byte("null"), nil // Or whatever you want here
    }
    return json.Marshal(n.number)
}

func (n *maybeNan) UnmarshalJSON(p []byte) error {
    if string(p) == "NaN" {
        n.isNan = true
        return nil
    }
    return json.Unmarshal(p, &n.number)
}

type myStruct struct {
    someNumber maybeNaN `json:"someNumber" bson:"someNumber"`
    /* ... */
}

Als je een willekeurige structuur van je BSON hebt, is je enige optie om de structuur te doorkruisen, met behulp van reflectie, en eventuele exemplaren van NaN om te zetten in een type (mogelijk een aangepast type zoals hierboven beschreven)




  1. Nodejs applicatie docker kan geen verbinding maken met mongodb docker container

  2. Hoe MongoDB Java-stuurprogramma MongoOptions configureren voor productiegebruik?

  3. Express MongoDB find() gebaseerd op _id veld

  4. MongoDB, Mongoose:hoe vind ik een subdocument in een gevonden document?