func JSON(x interface{}) string {
	buf := &bytes.Buffer{}
	enc := json.NewEncoder(buf)
	enc.SetEscapeHTML(false)
	if err := enc.Encode(x); err != nil {
		panic(err)
	}
	return buf.String()
}
Hmm.  According to the encoding.json docs:

String values encode as JSON strings coerced to valid UTF-8,
replacing invalid bytes with the Unicode replacement rune. The
angle brackets "<" and ">" are escaped to "\u003c" and "\u003e" to
keep some browsers from misinterpreting JSON output as
HTML. Ampersand "&" is also escaped to "\u0026" for the same
reason.
package match
import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"io/ioutil"
	"os"
	"reflect"
	"testing"
	. "github.com/Comcast/sheens/util/testutil"
)
type MatchTest struct {
	Pattern       interface{}              `json:"p"`
	Message       interface{}              `json:"m"`
	Bindings      map[string]interface{}   `json:"b,omitempty"`
	Expected      []map[string]interface{} `json:"w,omitempty"`
	Error         bool                     `json:"err,omitempty"`
	Title         string                   `json:"title,omitempty"`
	Doc           string                   `json:"doc,omitempty"`
	NoDoc         bool                     `json:"noDoc,omitempty"`
	Verbose       bool                     `json:"verbose,omitempty"`
	BenchmarkOnly bool                     `json:"benchmarkOnly,omitempty"`
}
func (t MatchTest) Name(i int) string {
	if t.Title == "" {
		return fmt.Sprintf("%d", i)
	} else {
		return fmt.Sprintf("%03d %s", i, t.Title)
	}
}