code: func JSONFieldsFromStruct(v reflect.Value) []string {
  	if v.Kind() != reflect.Struct {
  		return nil
  	}
  
  	m := getType2jfm(v.Type())
  	m.lock.Lock()
  	defer m.lock.Unlock()
  
  	l := make([]string, 0, len(m.fields))
  	for k := range m.fields {
  		l = append(l, k)
  	}
  	return l
  }
docs: // JSONFieldsFromStruct returns the names of JSON fields associated
  // with the given struct. Returns nil if v is not a struct