Commit Graph

249 Commits

Author SHA1 Message Date
Jeffrey Koehler 78a59792a3 add test of different strings
Added test for each of the different accepted values for ParseBool, and a few arbitrary results that should return false.
2020-05-30 06:34:47 -04:00
deef 7db3b02e3f
update Result.Bool to use golang bool parsing
golang has several tools that already parse boolean values in the standard library. 
Specifically strconv.ParseBool(string)
https://golang.org/pkg/strconv/#ParseBool
"ParseBool returns the boolean value represented by the string. It accepts 1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False. Any other value returns an error."

This change returns any matching ParseBool string to that boolean value, or if the string is not one of those values, the error being thrown, returns a false.
2020-05-30 06:16:06 -04:00
Jalitha 65616e6f35
Fix typo in .Get comment 2020-04-20 21:10:36 +10:00
tidwall f042915ca1 Remove custom appengine and js builds
This commit allows for gjson and sjson to be supported in
WebAssembly `wasm` projects, but breaks compatibility for
anyone using gjson with older Google App Engine and GopherJS.
2020-02-28 09:37:46 -07:00
Josh Baker c041e47f8a
Merge pull request #155 from Prithvipal/master
Fixed syntax document for escape character
2020-02-22 11:09:40 -07:00
Prithvipal Singh 1879ad91cd Addressed review suggestion 2020-02-22 23:25:31 +05:30
Prithvipal Singh 0439aef712 Fixed syntax document for escape character 2020-02-22 22:50:13 +05:30
tidwall 0360deb6d8 Added new modifiers
`@flatten` Flattens an array with child arrays.
  [1,[2],[3,4],[5,[6,7]]] -> [1,2,3,4,5,[6,7]]
The {"deep":true} arg can be provide for deep flattening.
  [1,[2],[3,4],[5,[6,7]]] -> [1,2,3,4,5,6,7]
The original json is returned when the json is not an array.

`@join` Joins multiple objects into a single object.
  [{"first":"Tom"},{"last":"Smith"}] -> {"first","Tom","last":"Smith"}
The arg can be "true" to specify that duplicate keys should be preserved.
  [{"first":"Tom","age":37},{"age":41}] -> {"first","Tom","age":37,"age":41}
Without preserved keys:
  [{"first":"Tom","age":37},{"age":41}] -> {"first","Tom","age":41}
The original json is returned when the json is not an object.

`@valid` Ensures that the json is valid before moving on. An
empty string is returned when the json is not valid, otherwise
it returns the original json.
2020-02-10 11:13:30 -07:00
tidwall d10932a0d0 Removed unmarshalling 2020-01-20 12:32:37 -07:00
tidwall 12826915de Removed unneeded comment 2020-01-20 08:29:11 -07:00
Josh Baker c9f07c7971
Merge pull request #150 from ory/add-this
Add @this modifier
2020-01-20 08:25:07 -07:00
aeneasr 8e8823353c
Add @this modifier
This modifier returns the current element as-is and can be used
to retrieve the JSON document itself. It is equivalent to the `#/` JSON Pointer.

Closes #149
2020-01-20 15:01:54 +01:00
tidwall 5c2e4b3824 Fixed modifier pipe issue
This commit fixes an issue where chaining modifiers that used a
string arg would fail to process the modifier following the first.

fixes #143
2019-11-18 09:51:37 -07:00
tidwall c34bf81952 Fix trailing multiselector value 2019-11-02 14:52:36 -07:00
tidwall 94e070960b Add link to multipaths 2019-11-01 05:15:58 -07:00
tidwall 1471a933ec Rename test 2019-11-01 05:15:43 -07:00
tidwall 1c258afe09 Allow for modifiers in sub-selectors 2019-11-01 05:08:48 -07:00
tidwall c5e72cdf74 Fix panic when key starts at-sign 2019-07-15 07:54:43 -07:00
tidwall dea71f728d Mention nested queries 2019-07-12 06:46:38 -07:00
tidwall 1e964df7d9 Support subqueries
It's now possible to do a query like

  topology.instances.#(service_roles.#(=="one"))#.service_version

On a JSON document such as

  {
    "topology": {
      "instances": [{
        "service_version": "1.2.3",
        "service_roles": ["one", "two"]
      },{
        "service_version": "1.2.4",
        "service_roles": ["three", "four"]
      },{
        "service_version": "1.2.2",
        "service_roles": ["one"]
      }]
    }
  }

Resulting in

  ["1.2.3","1.2.2"]
2019-07-12 06:14:45 -07:00
Josh Baker 90ca17622f
Update SYNTAX.md 2019-07-10 15:00:07 -07:00
tidwall 4d138e058b Add multipath syntax 2019-06-30 12:59:56 -07:00
tidwall d7c940e593 Fix missing raw result for array counts 2019-06-30 04:48:53 -07:00
tidwall 3b5bf6bb5e Added Subselectors
It now possible to select multiple independent paths and join
their results into a single JSON document.

For example, given the following JSON

    {
      "info": {
        "friends": [
          {"first": "Dale", "last": "Murphy", "age": 44},
          {"first": "Roger", "last": "Craig", "age": 68},
          {"first": "Jane", "last": "Murphy", "age": 47}
        ]
      }
    }

The path `[info.friends.0.first,info.friends.1.last]` returns

    ["Dale","Craig"]

Or path `{info.friends.0.first,info.friends.1.last}` returns

    {"first":"Dale","last":"Craig"}

You can also rename Object members such as

`{"alt1":info.friends.0.first,"alt2":info.friends.1.last}` returns

    {"alt1":"Dale","alt2":"Craig"}

Finally you can combine this with any GJSON component

`info.friends.[0.first,1.age]` returns

    ["Dale",68]

This feature was request by @errashe in issue #113.
2019-06-29 15:23:32 -07:00
tidwall 001444ea45 Remove the DisableChaining option
Chaining (pipe character) is now a part of the standard
2019-06-29 12:10:41 -07:00
tidwall 6781e4ee59 Allow paren queries 2019-06-29 11:31:27 -07:00
tidwall f8322e865d Rename file 2019-06-28 17:18:24 -07:00
Josh Baker f7c1980254
Update README.md 2019-06-28 17:17:38 -07:00
Josh Baker ae482cd23d
Update README.md 2019-06-28 17:16:29 -07:00
Josh Baker f73dd9bfd8
Create PATH-SYNTAX.md 2019-06-28 17:11:56 -07:00
tidwall ebf0b3fb77 Use no path for simple value queries 2019-06-28 10:18:23 -07:00
tidwall 00b15d756e Added querying array values 2019-06-28 05:55:18 -07:00
tidwall d95cbcaa9d Require multiarr results to always exist 2019-06-28 05:24:28 -07:00
tidwall e91a88bec4 Allow for chaining syntax in multi array 2019-06-28 04:41:32 -07:00
tidwall 6eb62ca33f Added new tests for deep selectors 2019-06-27 18:37:09 -07:00
tidwall 7660d0f79f Allow for pipe and dot mixing 2019-06-27 18:27:53 -07:00
tidwall 7b8705a6b6 Use 80 column width 2019-06-27 18:03:46 -07:00
tidwall b877bd43b1 Allow for chaining syntax in array subselects 2019-06-27 17:51:42 -07:00
tidwall 89b19799ff Fix non-existent selectors results 2019-06-27 15:50:15 -07:00
Josh Baker 40764d5d56 Added Go modules support 2019-06-05 16:41:31 -07:00
tidwall fb8e539484 Fixed typo in comment
close #109
2019-04-05 11:08:30 -07:00
Josh Baker 181e11634d
Code typo 2019-02-16 19:21:12 -07:00
tidwall eee0b6226f Fixed chained array result 2019-02-16 19:06:55 -07:00
tidwall 1ed2249f74 Added modifiers and path chaining
A modifier is a path component that performs custom processing on
the json.

Multiple paths can be "chained" together using the pipe character.
This is useful for getting results from a modified query.

See the README file for more information.
2019-02-16 18:29:39 -07:00
tidwall 5d7556ad3d Valid json optimization
Added ~20% performance boost be removing extra allocation when
Valid() is called with a json string.
2019-02-16 14:50:53 -07:00
tidwall 5a96cfda70 Added GopherJS support 2019-01-14 08:40:04 -07:00
Josh Baker 081192fa2e
Merge pull request #98 from thirstycoda/master
Added not like operator support to query
2018-10-28 08:46:04 -07:00
Josh Baker 1bd06b6ad9
Merge pull request #97 from dustinblackman/fix/getmanybytes
Fix GetManyBytes to use byte related methods
2018-10-28 08:42:31 -07:00
thirstycoda cced0fa719 Added not like operator support to query 2018-10-28 00:20:01 +01:00
Dustin Blackman 4c7d6ff4a9
fix GetManyBytes to use byte related methods 2018-10-25 16:34:28 -04:00