func (j *Json) Del(key string) {
	m, err := j.Map()
	if err != nil {
		return
	}
	delete(m, key)
}
Del modifies `Json` map by deleting `key` if it is present.
package simplejson
import (
	"encoding/json"
	"errors"
	"log"
)
func Version() string {
	return "0.5.0"
}
type Json struct {
	data interface{}
}
func NewJson(body []byte) (*Json, error) {
	j := new(Json)
	err := j.UnmarshalJSON(body)
	if err != nil {
		return nil, err
	}
	return j, nil
}
func New() *Json {
	return &Json{
		data: make(map[string]interface{}),
	}
}
func (j *Json) Interface() interface{} {
	return j.data
}
func (j *Json) Encode() ([]byte, error) {
	return j.MarshalJSON()
}
func (j *Json) EncodePretty() ([]byte, error) {
	return json.MarshalIndent(&j.data, "", "  ")
}
func (j *Json) MarshalJSON() ([]byte, error) {
	return json.Marshal(&j.data)
}
func (j *Json) Set(key string, val interface{}) {
	m, err := j.Map()
	if err != nil {
		return
	}
	m[key] = val
}
func (j *Json) SetPath(branch []string, val interface{}) {
	if len(branch) == 0 {
		j.data = val
		return
	}
	if _, ok := (j.data).(map[string]interface{}); !ok {
		j.data = make(map[string]interface{})
	}
	curr := j.data.(map[string]interface{})
	for i := 0; i < len(branch)-1; i++ {
		b := branch[i]
		if _, ok := curr[b]; !ok {
			n := make(map[string]interface{})
			curr[b] = n
			curr = n
			continue
		}
		if _, ok := curr[b].(map[string]interface{}); !ok {
			n := make(map[string]interface{})
			curr[b] = n
		}
		curr = curr[b].(map[string]interface{})
	}
	curr[branch[len(branch)-1]] = val
}