Как я могу получить JSON из BSON, если бы все мои ключи не назывались «Ключ»? - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь прочитать из базы данных, а затем вернуть результат пользователю как json.

Что происходит, так это то, что я получаю вывод:
[{"Key":"foo","Value":"bar"}]

Когда я хотел бы получить:
"{"foo":"bar"}"

Как получить первое?

Пример: (чтение из БД и преобразование Raw в строку непоказано)

package main

import (
    "encoding/json"
    "fmt"

    "go.mongodb.org/mongo-driver/bson"
)

func main() {

    var data = "{\"foo\":\"bar\"}"
    var testInterface interface{}
    e := bson.UnmarshalExtJSON([]byte(data), false, &testInterface)
    if e != nil {
        fmt.Println("err is ", e)
    }
    out, _ := json.Marshal(testInterface)
    fmt.Println(string(out))
    // prints: [{"Key":"foo","Value":"bar"}]
}

1 Ответ

2 голосов
/ 07 мая 2019

Вам нужно предоставить карту вместо интерфейса, чтобы получить значение в виде пары ключ-значение.

Попытка:

package main

import (
    "encoding/json"
    "fmt"

    "go.mongodb.org/mongo-driver/bson"
)

func main() {

    var data = "{\"foo\":\"bar\"}"
    var testInterface map[string]string
    e := bson.UnmarshalExtJSON([]byte(data), false, &testInterface)
    if e != nil {
        fmt.Println("err is ", e)
    }

    out, _ := json.Marshal(testInterface)
    fmt.Println(string(out))
    // prints: {"foo":"bar"}
}
...