mirror of https://github.com/tidwall/gjson.git
exists function
This commit is contained in:
parent
09a331fffa
commit
725f3caa55
15
README.md
15
README.md
|
@ -48,7 +48,10 @@ This will print:
|
|||
Prichard
|
||||
```
|
||||
|
||||
A path is a series of keys separated by a dot. A key may contain special wildcard characters '*' and '?'. To access an array value use the index as the key. To get the number of elements in an array use the '#' character.
|
||||
A path is a series of keys separated by a dot.
|
||||
A key may contain special wildcard characters '\*' and '?'.
|
||||
To access an array value use the index as the key.
|
||||
To get the number of elements in an array use the '#' character.
|
||||
The dot and wildcard character can be escaped with '\'.
|
||||
```
|
||||
{
|
||||
|
@ -69,14 +72,14 @@ The dot and wildcard character can be escaped with '\'.
|
|||
|
||||
## Result Type
|
||||
|
||||
GJSON supports the json types `string`, `number`, `bool`, and `null`. Arrays and Objects are returned as their raw json types.
|
||||
GJSON supports the json types `string`, `number`, `bool`, and `null`.
|
||||
Arrays and Objects are returned as their raw json types.
|
||||
|
||||
The `Result` type holds one of these types:
|
||||
|
||||
```
|
||||
bool, for JSON booleans
|
||||
float64, for JSON numbers
|
||||
Number, for JSON numbers
|
||||
string, for JSON string literals
|
||||
nil, for JSON null
|
||||
```
|
||||
|
@ -89,6 +92,12 @@ result.Value() // interface{} which may be nil, string, float64, or bool
|
|||
|
||||
// Or just get the value in one step.
|
||||
gjson.Get(json, "name.last").Value()
|
||||
|
||||
// Check for the existence of a value.
|
||||
if gjson.Get(json, "name.last").Exists(){
|
||||
println("value exists")
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
To directly access the value from its original type:
|
||||
|
|
11
gjson.go
11
gjson.go
|
@ -51,6 +51,15 @@ func (t Result) String() string {
|
|||
}
|
||||
}
|
||||
|
||||
// Exists returns true if value exists.
|
||||
//
|
||||
// if gjson.Get(json, "name.last").Exists(){
|
||||
// println("value exists")
|
||||
// }
|
||||
func (t Result) Exists() bool {
|
||||
return t.Type != Null && len(t.Raw) != 0
|
||||
}
|
||||
|
||||
// Value returns one of these types:
|
||||
//
|
||||
// bool, for JSON booleans
|
||||
|
@ -97,6 +106,8 @@ type frame struct {
|
|||
// A key may contain special wildcard characters '*' and '?'.
|
||||
// To access an array value use the index as the key.
|
||||
// To get the number of elements in an array use the '#' character.
|
||||
// The dot and wildcard character can be escaped with '\'.
|
||||
//
|
||||
// {
|
||||
// "name": {"first": "Tom", "last": "Anderson"},
|
||||
// "age":37,
|
||||
|
|
|
@ -103,6 +103,9 @@ var basicJSON = `{"age":100, "name":{"here":"B\\\"R"},
|
|||
func TestBasic(t *testing.T) {
|
||||
var token Result
|
||||
|
||||
if !Get(basicJSON, "name.last").Exists() {
|
||||
t.Fatal("expected true, got false")
|
||||
}
|
||||
token = Get(basicJSON, "name.here")
|
||||
if token.String() != "B\\\"R" {
|
||||
t.Fatal("expecting 'B\\\"R'", "got", token.String())
|
||||
|
|
Loading…
Reference in New Issue