Go - Creating JSON Data Byte Arrays from Structs

发布时间 2023-10-03 11:49:16作者: ZhangZhihuiAAA

Problem: You want to create JSON data from a struct.


Solution: Create the structs then use the json.Marshal or json.MarshalIndent to marshal the data into a JSON slice of bytes.

 

func   main ()   { 
      person   :=   struct{}

      data ,   err   :=   json . Marshal ( & person ) 
      if   err   !=   nil   { 
          log . Println ( "Cannot  marshal  person:" ,   err ) 
      } 
      err   =   os . WriteFile ( "han.json" ,   data ,   0644 ) 
      if   err   !=   nil   { 
          log . Println ( "Cannot  write  to  file" ,   err ) 
      } 
}

The file is not very readable. If you want a more readable version, you can use json.Mar⁠shalIndent instead. You need to put in two more parameters: the first is the prefix, and the second is the indent. Mostly if you want to have a clean JSON output, the prefix is an empty string while the indent is a single space:

data ,   err   :=   json . MarshalIndent ( & person ,   "" ,   "  " )