This does not work:

// MarshalJSON implements json.Marshaler interface
func (j *JsonObject) MarshalJSON() ([]byte, error) {
	if !j.Valid {
		return []byte("null"), nil
	}
	if j.HasTopLevelArray() {
		return json.Marshal(j.StringAnyMap[topLevelArrayKey])
	}
	return json.Marshal(j.StringAnyMap)
}

This does:

// MarshalJSON implements json.Marshaler interface
func (j JsonObject) MarshalJSON() ([]byte, error) {
	if !j.Valid {
		return []byte("null"), nil
	}
	if j.HasTopLevelArray() {
		return json.Marshal(j.StringAnyMap[topLevelArrayKey])
	}
	return json.Marshal(j.StringAnyMap)
}

This piece of code has been enhanced and is now part of the ground project. But this was a not-so-pleasant surprise!