sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur konverterar man bson till json effektivt med mongo-go-driver?

Om du känner till strukturen för din BSON kan du skapa en anpassad typ som implementerar json.Marshaler och json.Unmarshaler gränssnitt och hanterar NaN som du vill. Exempel:

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"`
    /* ... */
}

Om du har en godtycklig struktur för din BSON, är ditt enda alternativ att gå igenom strukturen med reflektion och konvertera eventuella förekomster av NaN till en typ (möjligen en anpassad typ enligt beskrivningen ovan)




  1. delar IO-objekt i flera nodinstanser

  2. Redis:möjligt att förfalla ett element i en array eller sorterad uppsättning?

  3. Uppdatera modell med Mongoose, Express, NodeJS

  4. FEL:underordnad process misslyckades, avslutades med fel nummer 1,mongodb