mirror of https://github.com/tidwall/gjson.git
Merge branch 'deef0000dragon1-deef0000dragon1-ParseBool'
This commit is contained in:
commit
eeddc5431f
3
gjson.go
3
gjson.go
|
@ -106,7 +106,8 @@ func (t Result) Bool() bool {
|
|||
case True:
|
||||
return true
|
||||
case String:
|
||||
return t.Str != "" && t.Str != "0" && t.Str != "false"
|
||||
b, err := strconv.ParseBool(t.Str)
|
||||
return !(!b || err != nil)
|
||||
case Number:
|
||||
return t.Num != 0
|
||||
}
|
||||
|
|
|
@ -313,10 +313,25 @@ func TestTypes(t *testing.T) {
|
|||
assert(t, (Result{Type: JSON}).Type.String() == "JSON")
|
||||
assert(t, (Result{Type: 100}).Type.String() == "")
|
||||
// bool
|
||||
assert(t, (Result{Type: String, Str: "true"}).Bool())
|
||||
assert(t, (Result{Type: True}).Bool())
|
||||
assert(t, (Result{Type: False}).Bool() == false)
|
||||
assert(t, (Result{Type: Number, Num: 1}).Bool())
|
||||
assert(t, (Result{Type: String, Str: "1"}).Bool())
|
||||
assert(t, (Result{Type: String, Str: "T"}).Bool())
|
||||
assert(t, (Result{Type: String, Str: "t"}).Bool())
|
||||
assert(t, (Result{Type: String, Str: "true"}).Bool())
|
||||
assert(t, (Result{Type: String, Str: "True"}).Bool())
|
||||
assert(t, (Result{Type: String, Str: "TRUE"}).Bool())
|
||||
assert(t, (Result{Type: String, Str: "tRuE"}).Bool() == false)
|
||||
assert(t, (Result{Type: String, Str: "0"}).Bool() == false)
|
||||
assert(t, (Result{Type: String, Str: "f"}).Bool() == false)
|
||||
assert(t, (Result{Type: String, Str: "F"}).Bool() == false)
|
||||
assert(t, (Result{Type: String, Str: "false"}).Bool() == false)
|
||||
assert(t, (Result{Type: String, Str: "False"}).Bool() == false)
|
||||
assert(t, (Result{Type: String, Str: "FALSE"}).Bool() == false)
|
||||
assert(t, (Result{Type: String, Str: "fAlSe"}).Bool() == false)
|
||||
assert(t, (Result{Type: String, Str: "random"}).Bool() == false)
|
||||
|
||||
// int
|
||||
assert(t, (Result{Type: String, Str: "1"}).Int() == 1)
|
||||
assert(t, (Result{Type: True}).Int() == 1)
|
||||
|
|
Loading…
Reference in New Issue