code: func (p *Sort) MarshalJSON() ([]byte, error) {
  	exprs, err := json.Marshal(p.ByItems)
  	if err != nil {
  		return nil, errors.Trace(err)
  	}
  	limitCount := []byte("null")
  	if p.ExecLimit != nil {
  		limitCount, err = json.Marshal(p.ExecLimit.Count)
  		if err != nil {
  			return nil, errors.Trace(err)
  		}
  	}
  	buffer := bytes.NewBufferString("{")
  	buffer.WriteString(fmt.Sprintf(
  		" \"exprs\": %s,\n"+
  			" \"limit\": %s,\n"+
  			" \"child\": \"%s\"}", exprs, limitCount, p.children[0].GetID()))
  	return buffer.Bytes(), nil
  }
docs: // MarshalJSON implements json.Marshaler interface.