json - 如何在 golang 中将字符串值作为 json 对象返回?

标签 json rest go beego

我将 golang 与 beego 框架一起使用,但我在将字符串作为 json 提供时遇到了问题。

EventsByTimeRange返回一个json格式的字符串值

this.Data["json"] = dao.EventsByTimeRange(request) // this -> beego controller
this.ServeJson()

"{\"key1\":0,\"key2\":0}"

如何去掉引号?

最佳答案

您可以在新类型中重新定义您的 json 格式字符串。这是一个小演示

package main

import (
    "encoding/json"
    "fmt"
)

type JSONString string

func (j JSONString) MarshalJSON() ([]byte, error) {
    return []byte(j), nil
}

func main() {
    s := `{"key1":0,"key2":0}`
    content, _ := json.Marshal(JSONString(s))
    fmt.Println(_, string(content))
}   

在你的情况下你可以这样写

this.Data["json"] = JSONString(dao.EventsByTimeRange(request))
this.ServeJson()   

顺便说一句,golang-json 包添加了引号,因为它将您的字符串视为 json 值,而不是 json k-v 对象。

关于json - 如何在 golang 中将字符串值作为 json 对象返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34605736/

相关文章:

android - java.lang.NoClassDefFoundError : com. 谷歌.gson.Gson

java - json 格式的 hashmap 输出数组

正则表达式以、包含和结束于

go - var _ xerrors.Formatter =包装{}

python - 使用 python (Flask) 从 qwant API 接收数据

javascript - 使用主干循环遍历每个 JSON 记录并显示在列表中

java - 测试 Jersey REST 资源(无效返回响应)

rest - Micronaut:测试 POST 请求

javascript - 如何使用 fetch() javascript 方法将数据发布到 .NET Core Web API

javascript - Firebase Admin SDK GO VerifyIDToken 返回的不是 App Engine 上下文错误