func Equal(vx, vy interface{}) bool {
	if reflect.TypeOf(vx) != reflect.TypeOf(vy) {
		return false
	}
	switch x := vx.(type) {
	case map[string]interface{}:
		y := vy.(map[string]interface{})
		if len(x) != len(y) {
			return false
		}
		for k, v := range x {
			val2 := y[k]
			if (v == nil) != (val2 == nil) {
				return false
			}
			if !Equal(v, val2) {
				return false
			}
		}
		return true
	case []interface{}:
		y := vy.([]interface{})
		if len(x) != len(y) {
			return false
		}
		var matches int
		flagged := make([]bool, len(y))
		for _, v := range x {
			for i, v2 := range y {
				if Equal(v, v2) && !flagged[i] {
					matches++
					flagged[i] = true
					break
				}
			}
		}
		return matches == len(x)
	default:
		return vx == vy
	}
}
Equal checks equality between 2 Body-encoded data.
package main
import (
	"encoding/json"
	"reflect"
	"strings"
)