Go - How to decode / convert txt file contains hexadecimal characters in a readable string

I have a log file where each line is JSON. Due to some Nginx security reasons, the logs are saved in hexadecimal format (for example, char will be converted to \ x22). The following is an example JSON string:

{ "body_bytes_sent": "474", "params": {\x22device_id\x22: \x221234567890\x22} } 

My goal:

  • Read the file line by line.
  • Convert each line to readable format

     { "body_bytes_sent": "474", "params" : {"device_id": "1234567890"} } 
  • Convert this string to a JSON object so that I can manipulate it.

Any help would be appreciated.

+6
source share
1 answer

You can use strconv.Unquote to convert the string to normal:

 package main import ( "encoding/json" "fmt" "strconv" ) func main() { // this is what your input string looks like... qs := "{\\x22device_id\\x22: \\x221234567890\\x22}" // now let convert it to a normal string // note that it has to look like a Go string literal so we're // using Sprintf s, err := strconv.Unquote(fmt.Sprintf(`"%s"`, qs)) if err != nil { panic(err) } fmt.Println(s) // just for good measure, let see if it can actually be decoded. // SPOILER ALERT: It decodes just fine! var v map[string]interface{} if err := json.Unmarshal([]byte(s), &v); err != nil { panic(err) } fmt.Println(v) } 

Playground

+4
source

All Articles