douquan3294 2019-05-07 17:39
浏览 38
已采纳

如何在没有将所有密钥都命名为“ Key”的情况下从BSON获取JSON?

I'm trying to read from a database and then return the result to the user as json.

What's happening is that I'm getting output like:
[{"Key":"foo","Value":"bar"}]

When I would like to get:
"{"foo":"bar"}"

How do I get the former?

Example: (reading from the db and converting Raw to string are not shown)

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条回答 默认 最新

  • doujiejujixi27244 2019-05-07 17:50
    关注

    You need to provide a map instead of an interface to get value as a key-value pair.

    Try:

    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"}
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?