Documentation ¶
Overview ¶
Package ask provides a simple way of accessing nested properties in maps and arrays. Works great in combination with encoding/json and other packages that "Unmarshal" arbitrary data into Go data-types. Inspired by the get function in the lodash javascript library.
Example ¶
// Use parsed JSON as source data var object map[string]interface{} json.Unmarshal([]byte(`{ "a": [{ "b": { "c": 3 } }] }`), &object) // Extract the 3 res, ok := For(object, "a[0].b.c").Int(0) fmt.Println(res, ok) // Attempt extracting a string at path .d that does not exist res2, ok := For(object, "a[0].b.d").String("nothing") fmt.Println(res2, ok)
Output: 3 true nothing false
Index ¶
- type Answer
- func (a *Answer) Bool(d bool) (bool, bool)
- func (a *Answer) Exists() bool
- func (a *Answer) Float(d float64) (float64, bool)
- func (a *Answer) Int(d int64) (int64, bool)
- func (a *Answer) Map(d map[string]interface{}) (map[string]interface{}, bool)
- func (a *Answer) Path(path string) *Answer
- func (a *Answer) PathArgs(parts ...interface{}) *Answer
- func (a *Answer) Slice(d []interface{}) ([]interface{}, bool)
- func (a *Answer) String(d string) (string, bool)
- func (a *Answer) Uint(d uint64) (uint64, bool)
- func (a *Answer) Value() interface{}
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Answer ¶
type Answer struct {
// contains filtered or unexported fields
}
Answer holds result of call to For, use one of its methods to extract a value.
func ForArgs ¶ added in v0.4.0
func ForArgs(source interface{}, parts ...interface{}) *Answer
ForArgs is used to select a path using individual arguments from source to return as answer.
func (*Answer) Bool ¶
Bool attempts asserting answer as a bool. The first return value is the result, and the second indicates if the operation was successful. If not successful the first return value will be set to the d parameter.
func (*Answer) Float ¶
Float attempts asserting answer as a float64. Casting from other number types will be done if necessary. The first return value is the result, and the second indicates if the operation was successful. If not successful the first return value will be set to the d parameter.
func (*Answer) Int ¶
Int attempts asserting answer as a int64. Casting from other number types will be done if necessary. The first return value is the result, and the second indicates if the operation was successful. If not successful the first return value will be set to the d parameter.
func (*Answer) Map ¶
Map attempts asserting answer as a map[string]interface{}. The first return value is the result, and the second indicates if the operation was successful. If not successful the first return value will be set to the d parameter.
func (*Answer) PathArgs ¶ added in v0.4.0
PathArgs does the same thing as ForArgs but uses existing answer as source.
func (*Answer) Slice ¶
Slice attempts asserting answer as a []interface{}. The first return value is the result, and the second indicates if the operation was successful. If not successful the first return value will be set to the d parameter.
func (*Answer) String ¶
String attempts asserting answer as a string. The first return value is the result, and the second indicates if the operation was successful. If not successful the first return value will be set to the d parameter.