Example #1
0
/**
 *  parse json raw data
 *
 *  @return error
 */
func (j *Json) parseJson() error {

	if 0 < j.analyzedBuf.Len() {
		return nil
	}

	if nil == j.rawdata {
		return errors.New("Json raw data nil, can not be analyzed")
	}

	err := marshal(reflect.ValueOf(j.rawdata), j.nullTag, j.boolTag, &j.analyzedBuf)
	return err
}
Example #2
0
/**
 *  parse json bytes data
 *
 *  @param `v`          handle object struct or map or slice
 *  @param `nullTag`    nil tag, field or data is nil replace
 *          e.g.:
 *              default ""  - 如果空字符串不会将(空数据)字段或key添加到json解析的数据中
 *              "null"      - 空数据解析: {"Key":null}
 *              "nil"       - 空数据解析: {"Key":nil}
 *  @param `boolTag`    bool tag
 *          e.g.:
 *              default ""  - {"KeyBool":trye|false}
 *              "YES|NO"    - {"KeyBool":YES|NO}
 *              "1|0"       - {"KeyBool":1|0}
 *  @return []byte
 *  @return error
 */
func Marshal(v interface{}, nullTag, boolTag string) ([]byte, error) {
	var buf bytes.Buffer
	err := marshal(reflect.ValueOf(v), nullTag, boolTag, &buf)
	return buf.Bytes(), err
}