|
@@ -81,6 +81,15 @@ func (jq *JSONQuery) Int(s ...string) (int, error) {
|
|
|
return intFromInterface(val)
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+func (jq *JSONQuery) Int64(s ...string) (int64, error) {
|
|
|
+ val, err := rquery(jq.data, s...)
|
|
|
+ if err != nil {
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ return int64FromInterface(val)
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
func (jq *JSONQuery) String(s ...string) (string, error) {
|
|
|
val, err := rquery(jq.data, s...)
|
|
@@ -321,6 +330,23 @@ func intFromInterface(val interface{}) (int, error) {
|
|
|
return 0, fmt.Errorf("Expected numeric value for Int, got \"%v\"", val)
|
|
|
}
|
|
|
|
|
|
+func int64FromInterface(val interface{}) (int64, error) {
|
|
|
+ switch val.(type) {
|
|
|
+ case float64:
|
|
|
+ return int64(val.(float64)), nil
|
|
|
+ case string:
|
|
|
+ ival, err := strconv.ParseFloat(val.(string), 64)
|
|
|
+ if err == nil {
|
|
|
+ return int64(ival), nil
|
|
|
+ }
|
|
|
+ case int:
|
|
|
+ return int64(val.(int)), nil
|
|
|
+ case int64:
|
|
|
+ return val.(int64), nil
|
|
|
+ }
|
|
|
+ return 0, fmt.Errorf("Expected numeric value for Int, got \"%v\"", val)
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
func objectFromInterface(val interface{}) (map[string]interface{}, error) {
|
|
|
switch val.(type) {
|