douren0558 2016-08-16 14:26
浏览 16
已采纳

将“ ”嵌入字符串文字时出错

I need to decode a JSON string which has " " in it:

[
    {"Name":"Neo", "Message":"Hi
:Hello everyone"},
    {"Name":"Sam","Messsage":"Hello
Eveery
One"}
]

I use the Golang code below:

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Messages  []string     `json:"Name,omitempty"`
}

func main() {
s := "[{\"Name\":\"Neo\", \"Message\":\"Hi
:Hello everyone\"},   {\"Name\":\"Sam\",\"Messsage\":\"Hello
Eveery
One\"}]"
var pro Person
err := json.Unmarshal([]byte(s), &pro)
if err == nil {
fmt.Printf("%+v
", pro)
} else {
fmt.Println(err)
fmt.Printf("%+v
", err)
}
}

But I get the error:

ERROR invalid character '
' in string literal
  • 写回答

2条回答 默认 最新

  • duagfgfn1981 2016-08-16 16:06
    关注

    There are a few of issues here. The first is that newline is not allowed in a JSON string. Use the two bytes to specify a newline, not an actual newline. If you use an interpreted string literal, then the \ must be quoted with a \. Example:

    "Hello\
    World"
    

    No quoting is required in a raw string literal:

    `Hello
    World`
    

    The next issue is that JSON value is an array of object values. To handle the array, unmarshal to a slice:

    var pro []Person
    err := json.Unmarshal([]byte(s), &pro)
    

    To handle the objects, define Person as a struct:

    type Person struct {
      Name    string
      Message string
    }
    

    working example on the playground.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭