Commit Graph

102 Commits

Author SHA1 Message Date
Josh Baker 2e78916f4a option to disable validation 2017-05-08 17:47:46 -07:00
Josh Baker 2555fc0b61 Unmarshal Validation
The Unmarshal function now returns an error if the JSON is not valid.
2017-05-08 17:33:03 -07:00
Josh Baker 0bedaf01cb updated wording 2017-05-08 07:47:07 -07:00
Josh Baker 371acf8f0c updated wording 2017-05-08 07:40:56 -07:00
Josh Baker 19194a58d8 typos 2017-05-08 06:55:29 -07:00
Josh Baker 3f5adf1ba9 New gjson.Unmarshal function
It's a drop in replacement for json.Unmarshal and you can typically see
a 3 to 4 times boost in performance without the need for external tools
or generators.

This function works almost identically to json.Unmarshal except that
it expects the json to be well-formed prior to being called. Invalid
json will not panic, but it may return back unexpected results.
Therefore the return value of this function will always be nil.

Another difference is that gjson.Unmarshal will automatically attempt
to convert JSON values to any Go type. For example, the JSON string
"100" or the JSON number 100 can be equally assigned to Go string,
int, byte, uint64, etc. This rule applies to all types.
2017-05-07 18:26:54 -07:00
Josh Baker 039b641eab added result.Time() function 2017-04-14 17:58:25 -07:00
Josh Baker 6e0babc7e8 updated benchmarks, added features list 2017-04-14 11:13:32 -07:00
Josh Baker a8ccb8767a mention "values" 2017-04-12 14:16:56 -07:00
Josh Baker 7d884e04ac minor update 2017-04-12 14:14:42 -07:00
Josh Baker 766ad13f76 minor updates 2017-04-10 12:26:09 -07:00
Josh Baker 9c689b0be6 cleanup benchmarks 2017-04-10 11:41:37 -07:00
Josh Baker 8f291465f6 added Exists() to the list of handy functions 2017-04-02 10:13:06 -07:00
Josh Baker 09d1c5c5bc added gjson-safe comment 2017-02-05 09:10:42 -07:00
Josh Baker e3f249f4fd Missing package alias 2016-12-16 09:22:41 -07:00
Josh Baker 1a8de7c426 add query operators 2016-12-02 11:53:14 -07:00
Josh Baker 6fd75099ef Update README.md 2016-11-30 12:04:48 -07:00
Josh Baker 62892351c5 added ForEach function 2016-11-30 10:50:59 -07:00
Josh Baker 86b1b630e4 Query array for multiple matches
It's now possible to query an array for multiple matches by adding the
'#' character immediately following the query.

For example, using the following JSON:

  {
    "friends": [
      {"first": "Dale", "last": "Murphy"},
      {"first": "Roger", "last": "Craig"},
      {"first": "Jane", "last": "Murphy"}
    ]
  }

To return the first match:

  `friends.#[last="Murphy"].first` >> "Dale"

To return all matches:

  `friends.#[last="Murphy"]#.first` >> ["Dale","Jane"]

Thanks to @chuttam for requesting this feature, closes #15.
2016-11-30 07:59:24 -07:00
Josh Baker 1a15b54bbb add bookmark link for GetMany 2016-11-28 19:04:18 -07:00
Josh Baker ae5d307631 Added GetMany. Query many paths at once.
The `GetMany(json, paths...)` function can be used to get multiple
values at one time from the same json string.
This is preferrable to calling `Get(json, path)` over and over.
It's also optimized to scan over a JSON payload once.

This addresses a feature request by @FZambia, and closes #13.
2016-11-28 15:10:11 -07:00
Josh Baker 72b0cad1c1 example getting raw bytes, closes #12 2016-11-04 19:41:23 -07:00
Josh Baker ac4cd1ab55 empty arrays for non-existent values #11 2016-11-02 13:45:25 -07:00
Josh Baker b95abbe94a removed obsolete field 2016-11-02 11:01:06 -07:00
Josh Baker a02d704254 added result.Uint() function resolves #9 2016-11-02 08:24:13 -07:00
Josh Baker 78babc5712 typo 2016-10-30 14:35:08 -07:00
Josh Baker bc89b871de typos 2016-10-28 10:56:10 -07:00
Josh Baker 95c6f92c50 mention GetBytes function 2016-10-28 09:07:48 -07:00
Josh Baker 5fdbb97fe1 mention jsoned 2016-10-25 22:03:43 -07:00
Josh Baker 800ce5e927 added Index field 2016-10-17 17:39:27 -07:00
Josh Baker 3e35b37021 fix subquery examples 2016-08-31 13:24:47 -07:00
Josh Baker f40fe4ac37 subquery syntax 2016-08-31 13:23:20 -07:00
Josh Baker 550c66c276 added reset timer to all benchmarks 2016-08-27 06:20:43 -07:00
Josh Baker 19f9404e51 Updated logic for better ssa compilation in Go 1.7 2016-08-25 07:22:48 -07:00
Josh Baker 0669befdc3 fixed typo in example 2016-08-24 08:06:20 -07:00
Josh Baker b661f333a3 Update README.md 2016-08-22 06:13:09 -07:00
Josh Baker ad7311075f Update README.md 2016-08-22 06:11:47 -07:00
Josh Baker cd422a3e10 Removed Multi. Added Parse and result.Get funcs
The Multi field was too bulky. fixes #4
Added a Parse(json) function that will do a simple parse of json.
Added a result.Get(path) function that returns a child result.
Added Bool(), Int(), and Float() to result type. fixes #5
2016-08-22 06:05:51 -07:00
Josh Baker e42a0961e6 added go tag to codeblock 2016-08-21 10:56:31 -07:00
Josh Baker 360ac81635 additional example 2016-08-21 09:56:42 -07:00
Josh Baker d498de1770 Update README.md 2016-08-21 07:30:33 -07:00
Josh Baker 0757a4d1e7 get nested array values, fixes #4
To get all the friends last names use:

"friends.#.last"

{
  "friends": [
    {"first": "James", "last": "Murphy"},
    {"first": "Roger", "last": "Craig"}
  ]
}
2016-08-21 06:57:13 -07:00
Josh Baker 0e6e567424 optimistic optimizations 2016-08-19 11:22:59 -07:00
Josh Baker e865d89fc7 explain Exists() function 2016-08-12 16:26:06 -07:00
Josh Baker 725f3caa55 exists function 2016-08-12 08:39:08 -07:00
Andrew Murray 9595c3a8fe Fixed typos 2016-08-13 00:22:09 +10:00
Josh Baker 57e7f71ee6 escape character in path 2016-08-11 19:16:21 -07:00
Josh Baker 06af1af34e fixed benchmark bug with jsonparser
Big thanks to dlsspy for pointing this out.
2016-08-11 18:15:15 -07:00
Kenny Grant af28028c01 Fix 'does not validate' wording in readme 2016-08-11 22:05:25 +01:00
Josh Baker 9a63765fe5 added jsonparser benchmark 2016-08-11 10:53:50 -07:00
Josh Baker a4005bcf0f added stack frame. faster 2016-08-11 10:39:38 -07:00
Josh Baker f4afb106da first commit 2016-08-11 07:50:34 -07:00