【发布时间】:2018-11-14 08:35:37
【问题描述】:
我有一些字符串想要转换为 JSON。这里使用encoding/json,其他包没试过。
如果按原样保存,字符串可能包含换行符和其他破坏 JSON 的内容。
如果我传递一个字符串文字,它会起作用 - 它会在反斜杠前面添加反斜杠。如果我只传递一个常规字符串,它就行不通。我似乎无法弄清楚是否有办法使用包含字符串文字的变量。
编辑:正如所指出的,这些不是相同的值,我有点理解,但这并不能帮助我解决我的问题。
示例代码:
package main
import (
"fmt"
"encoding/json"
)
func main() {
type Test struct {
Input string
}
regularString := Test{"asd\nqwe"}
out, err := json.Marshal(regularString)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(out))
literalString := Test{`asd\nqwe`}
out, err = json.Marshal(literalString )
if err != nil {
fmt.Println(err)
}
fmt.Println(string(out))
}
【问题讨论】:
-
您期望的样本输出是什么?如果它更清楚,我已经添加了几个额外的
Printlns,它们显示了在 go playground here 中编码的字符串。注意第一个有一个实际的新行,第二个有一个 \n ,它将在 json 中编码为 \\n 以防止它被解释为一个新行。
标签: json string go string-literals