Commit Graph

308 Commits

Author SHA1 Message Date
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
tidwall 1e3f6aeaa5 Fix leftover array and map values
fixes #81
2018-08-02 08:58:17 -07:00
Josh Baker f92dbfc6b2 Fix different reuslts on duplicate keys
fixes #79
2018-07-30 14:44:31 -07:00
Josh Baker ba784d767a Fix string output for large integers
This fix makes calling String() on a JSON Number return the original value
as it was represented in the JSON document for signed and unsigned integers.
This ensures that very big (plus-53bit) integers are correctly returned.
Floating points maintain their previous behavior [-+]?[0-9]*\.?[0-9]*.

closes #74
2018-07-10 18:10:33 -07:00
Josh Baker f123b34087 Add appengine support 2018-06-21 11:09:58 -07:00
Josh Baker afaeb95620 Fix false validation
closes #73
2018-06-13 11:46:59 -07:00
Josh Baker 3cd3a11923
Merge pull request #71 from speier/master
valid bytes method
2018-04-29 08:13:28 -07:00
speier 3a977634eb valid bytes method 2018-04-27 15:54:16 +02:00
Josh Baker 9ed3f8e1a5
Merge pull request #67 from bcho/patch-1
Add `arrayOrMap` result description
2018-03-01 11:15:57 -07:00
hbc 93d61e6369
Add `arrayOrMap` result description
Explain `Result.Value` will return array and map when possible.
2018-02-28 11:21:22 +08:00
Josh Baker 01f00f1296
Merge pull request #66 from Hexilee/master
Result.Bool() can parse 'false' as false
2018-02-23 08:48:56 -07:00
Hexilee 9fa9086994 Result.Bool() can parse 'false' as false 2018-02-23 20:25:48 +08:00
Josh Baker aff9dcea3c uncomment function 2018-02-18 10:09:03 -07:00
Josh Baker c2e370e1b3 comment on Valid 2018-02-18 10:05:23 -07:00
Josh Baker df0b0cce42
section on json validation 2018-02-18 09:49:01 -07:00
Josh Baker 46c712f1ce
update playground badge 2018-02-10 11:31:49 -07:00
Josh Baker 54d114d487
minor updates 2018-02-10 09:30:30 -07:00
Josh Baker 6d43584b26
mention related projects 2018-02-10 09:10:40 -07:00
Josh Baker 4b8623b9d6
minor edits 2018-02-09 19:51:56 -07:00
Josh Baker 749b396bb9
Update README.md 2018-02-09 16:09:45 -07:00
Josh Baker 077965694f
changed badge color 2018-02-09 16:08:32 -07:00
Josh Baker b9953e2865
Update README.md 2018-02-09 16:04:47 -07:00
Josh Baker a2f35b522e Added support for JSON Lines
Added support for JSON Lines (http://jsonlines.org) using the `..` prefix.
Which when specified, treats the multi-lined document as an array.

For example:

```
{"name": "Gilbert", "age": 61}
{"name": "Alexa", "age": 34}
{"name": "May", "age": 57}
{"name": "Deloise", "age": 44}
```

```
..#                   >> 4
..1                   >> {"name": "Alexa", "age": 34}
..3                   >> {"name": "Deloise", "age": 44}
..#.name              >> ["Gilbert","Alexa","May","Deloise"]
..#[name="May"].age   >> 57
```

Closes #60
2018-02-09 15:42:42 -07:00
Josh Baker 5fe9078c47
mention large integer support 2018-02-08 12:21:27 -07:00
Josh Baker bff3f07fe7
mention large integer support 2018-02-08 12:21:08 -07:00
Josh Baker 87033efcae array query mismatch, fixes #58 2018-01-23 05:45:05 -07:00
Josh Baker 5cd723d566 simplify getmanybytes 2017-12-22 07:19:48 -07:00
Josh Baker 62ee2064df remove commented line 2017-12-22 07:17:19 -07:00
Josh Baker 09641abb33 update tagline 2017-12-22 07:16:29 -07:00
Josh Baker e62d62a3e1 match GetMany and Get results, fixes #55 2017-12-22 06:58:04 -07:00
Josh Baker 080cd22816 fix mysterious missing result
fixes #54
2017-12-13 16:29:27 -07:00
Josh Baker 182ad76050 Array() from null becomes zero length Go array
fixes #53
2017-12-01 14:13:24 -07:00
Josh Baker 67e2a63ac7 Merge branch 'erikjohnston-fix-raw-false' 2017-11-20 11:50:05 -07:00
Erik Johnston 922b012d22 Fix bug where Result.Raw of literal 'false' was 'f' 2017-11-20 17:59:58 +00:00
Josh Baker ac7b6ae6f2 deprecated unmarshalling 2017-10-18 05:19:20 -07:00
Josh Baker 5a69e67cfd GetMany result value missing, fixes #48 2017-09-25 04:39:06 -07:00
Josh Baker 3c91814cf6 GetMany result incorrect, fixes #47 2017-09-25 04:37:57 -07:00
Josh Baker be96719f99 incomplete surrogate codepoints, fixes #38 2017-08-30 10:08:10 -07:00
Josh Baker 4e8f0c7f28 added playground link 2017-08-14 18:16:21 -07:00
Josh Baker ccc7f39b3a added IsObject IsArray helper functions 2017-08-14 08:23:21 -07:00
Josh Baker 6daf3373dc Moved benchmark code
Moved benchmark to a different repository to avoid the fetching of
unneeded imports. Please find these benchmarks at
https://github.com/tidwall/gjson-benchmarks
2017-08-14 08:21:16 -07:00
Josh Baker c784c41781 Allow parsing of large integers
This commit fixes an issue in which GJSON was not representing integers
correctly that were greater than 53-bits when calling the result.Int()
and result.Uint() functions. This happened because GJSON stored all
numbers as float64s in the result.Num field, and Int()/Uint() would
simply try to convert the float64 to int64/uint64 by issuing
int64(result.Num) or uint64(result.Num) operations.

Now rather than a simple cast, GJSON checks to see if the float64 is a
whole integer and if the integer can fit within 53-bits. If so, then
the cast method can be used. Otherwise GJSON attempts to parse the
result.Raw directly. If that fails too, it falls back to the original
method.

This fix should maintain compatibility with existing applications.

thanks @joelpresence for reporting
fixes #29
2017-05-25 19:39:18 -07:00