github.com/mem/u-root@v2.0.1-0.20181004165302-9b18b4636a33+incompatible/cmds/elvish/program/json.go (about)

     1  package program
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  )
     7  
     8  func quoteJSON(s string) string {
     9  	var b bytes.Buffer
    10  	b.WriteRune('"')
    11  	for _, r := range s {
    12  		if r == '\\' {
    13  			b.WriteString(`\\`)
    14  		} else if r == '"' {
    15  			b.WriteString(`\"`)
    16  		} else if r < 0x20 {
    17  			fmt.Fprintf(&b, `\u%04x`, r)
    18  		} else {
    19  			b.WriteRune(r)
    20  		}
    21  	}
    22  	b.WriteRune('"')
    23  	return b.String()
    24  }