decode json including json encoded strings

前端 未结 1 1155
北恋
北恋 2021-01-29 05:13

Hey guys I am getting websocket information from external Api and it\'s give me json response in this way:

 `{\"name\":\"message\",\"args\":[\"{\\\"method\\\":\\         


        
相关标签:
1条回答
  • 2021-01-29 06:01

    The application is parsing data containing the substring "text":"<a href="https. This is not valid JSON. The error message is complaining about the h in href.

    Because the JSON value includes encoded JSON values, the application must decode in two steps:

    type main struct {
      Name string   `json:"name"`
      Args []string `json:"args"`
    }
    
    type arg struct {
      Method string `json:"method"`
      Params par    `json:"params"`
    }
    type par struct {
      Channel   string `json:"channel,omitempty"`
      Name      string `json:"name,omitempty"`
      NameColor string `json:"nameColor,omitempty"`
      Text      string `json:"text,omitempty"`
      Time      int64  `json:"time,omitempty"`
    }
    
    str := `{"name":"message","args":["{\"method\":\"chatMsg\",\"params\":{\"channel\":\"channel\",\"name\":\"name\",\"nameColor\":\"B5B11E\",\"text\":\"<a href=\\\"https://play.spotify.com/browse\\\" target=\\\"_blank\\\">https://play.spotify.com/browse</a>\",\"time\":1455397119}}"]}`
    var m main
    if err := json.Unmarshal([]byte(str), &m); err != nil {
        log.Fatal(err)
    }
    var args arg
    if err := json.Unmarshal([]byte(m.Args[0]), &args); err != nil {
        log.Fatal(err)
    }
    

    playground example

    0 讨论(0)
提交回复
热议问题