我需要解码其中包含"\n"的JSON字符串:
[
{"Name":"Neo", "Message":"Hi\n:Hello everyone"},
{"Name":"Sam","Messsage":"Hello\nEveery\nOne"}
]
Run Code Online (Sandbox Code Playgroud)
我使用下面的Golang代码:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Messages []string `json:"Name,omitempty"`
}
func main() {
s := "[{\"Name\":\"Neo\", \"Message\":\"Hi\n:Hello everyone\"}, {\"Name\":\"Sam\",\"Messsage\":\"Hello\nEveery\nOne\"}]"
var pro Person
err := json.Unmarshal([]byte(s), &pro)
if err == nil {
fmt.Printf("%+v\n", pro)
} else {
fmt.Println(err)
fmt.Printf("%+v\n", err)
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
ERROR invalid character '\n' in string literal
Run Code Online (Sandbox Code Playgroud)
这里有一些问题.第一个是JSON字符串中不允许换行.使用这两个字节\n指定换行符,而不是实际的换行符.如果使用解释的字符串文字,则\必须使用a引用\.例:
"Hello\\nWorld"
Run Code Online (Sandbox Code Playgroud)
原始字符串文字中不需要引用:
`Hello\nWorld`
Run Code Online (Sandbox Code Playgroud)
下一个问题是JSON值是一个对象值数组.要处理数组,请对切片进行解组:
var pro []Person
err := json.Unmarshal([]byte(s), &pro)
Run Code Online (Sandbox Code Playgroud)
要处理对象,请将Person定义为结构:
type Person struct {
Name string
Message string
}
Run Code Online (Sandbox Code Playgroud)