Merge pull request #10227 from owncloud/dependabot/go_modules/github.com/tidwall/gjson-1.18.0
chore(deps): bump github.com/tidwall/gjson from 1.17.3 to 1.18.0
This commit is contained in:
@@ -87,7 +87,7 @@ require (
|
|||||||
github.com/stretchr/testify v1.9.0
|
github.com/stretchr/testify v1.9.0
|
||||||
github.com/test-go/testify v1.1.4
|
github.com/test-go/testify v1.1.4
|
||||||
github.com/thejerf/suture/v4 v4.0.5
|
github.com/thejerf/suture/v4 v4.0.5
|
||||||
github.com/tidwall/gjson v1.17.3
|
github.com/tidwall/gjson v1.18.0
|
||||||
github.com/tus/tusd/v2 v2.5.0
|
github.com/tus/tusd/v2 v2.5.0
|
||||||
github.com/unrolled/secure v1.14.0
|
github.com/unrolled/secure v1.14.0
|
||||||
github.com/urfave/cli/v2 v2.27.4
|
github.com/urfave/cli/v2 v2.27.4
|
||||||
|
|||||||
@@ -1153,8 +1153,8 @@ github.com/thanhpk/randstr v1.0.6 h1:psAOktJFD4vV9NEVb3qkhRSMvYh4ORRaj1+w/hn4B+o
|
|||||||
github.com/thanhpk/randstr v1.0.6/go.mod h1:M/H2P1eNLZzlDwAzpkkkUvoyNNMbzRGhESZuEQk3r0U=
|
github.com/thanhpk/randstr v1.0.6/go.mod h1:M/H2P1eNLZzlDwAzpkkkUvoyNNMbzRGhESZuEQk3r0U=
|
||||||
github.com/thejerf/suture/v4 v4.0.5 h1:F1E/4FZwXWqvlWDKEUo6/ndLtxGAUzMmNqkrMknZbAA=
|
github.com/thejerf/suture/v4 v4.0.5 h1:F1E/4FZwXWqvlWDKEUo6/ndLtxGAUzMmNqkrMknZbAA=
|
||||||
github.com/thejerf/suture/v4 v4.0.5/go.mod h1:gu9Y4dXNUWFrByqRt30Rm9/UZ0wzRSt9AJS6xu/ZGxU=
|
github.com/thejerf/suture/v4 v4.0.5/go.mod h1:gu9Y4dXNUWFrByqRt30Rm9/UZ0wzRSt9AJS6xu/ZGxU=
|
||||||
github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94=
|
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
|
||||||
github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
||||||
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
|
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
|
||||||
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
||||||
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
||||||
|
|||||||
+12
-10
@@ -438,15 +438,15 @@ Benchmarks of GJSON alongside [encoding/json](https://golang.org/pkg/encoding/js
|
|||||||
and [json-iterator](https://github.com/json-iterator/go)
|
and [json-iterator](https://github.com/json-iterator/go)
|
||||||
|
|
||||||
```
|
```
|
||||||
BenchmarkGJSONGet-16 11644512 311 ns/op 0 B/op 0 allocs/op
|
BenchmarkGJSONGet-10 17893731 202.1 ns/op 0 B/op 0 allocs/op
|
||||||
BenchmarkGJSONUnmarshalMap-16 1122678 3094 ns/op 1920 B/op 26 allocs/op
|
BenchmarkGJSONUnmarshalMap-10 1663548 2157 ns/op 1920 B/op 26 allocs/op
|
||||||
BenchmarkJSONUnmarshalMap-16 516681 6810 ns/op 2944 B/op 69 allocs/op
|
BenchmarkJSONUnmarshalMap-10 832236 4279 ns/op 2920 B/op 68 allocs/op
|
||||||
BenchmarkJSONUnmarshalStruct-16 697053 5400 ns/op 928 B/op 13 allocs/op
|
BenchmarkJSONUnmarshalStruct-10 1076475 3219 ns/op 920 B/op 12 allocs/op
|
||||||
BenchmarkJSONDecoder-16 330450 10217 ns/op 3845 B/op 160 allocs/op
|
BenchmarkJSONDecoder-10 585729 6126 ns/op 3845 B/op 160 allocs/op
|
||||||
BenchmarkFFJSONLexer-16 1424979 2585 ns/op 880 B/op 8 allocs/op
|
BenchmarkFFJSONLexer-10 2508573 1391 ns/op 880 B/op 8 allocs/op
|
||||||
BenchmarkEasyJSONLexer-16 3000000 729 ns/op 501 B/op 5 allocs/op
|
BenchmarkEasyJSONLexer-10 3000000 537.9 ns/op 501 B/op 5 allocs/op
|
||||||
BenchmarkJSONParserGet-16 3000000 366 ns/op 21 B/op 0 allocs/op
|
BenchmarkJSONParserGet-10 13707510 263.9 ns/op 21 B/op 0 allocs/op
|
||||||
BenchmarkJSONIterator-16 3000000 869 ns/op 693 B/op 14 allocs/op
|
BenchmarkJSONIterator-10 3000000 561.2 ns/op 693 B/op 14 allocs/op
|
||||||
```
|
```
|
||||||
|
|
||||||
JSON document used:
|
JSON document used:
|
||||||
@@ -487,4 +487,6 @@ widget.image.hOffset
|
|||||||
widget.text.onMouseUp
|
widget.text.onMouseUp
|
||||||
```
|
```
|
||||||
|
|
||||||
*These benchmarks were run on a MacBook Pro 16" 2.4 GHz Intel Core i9 using Go 1.17 and can be found [here](https://github.com/tidwall/gjson-benchmarks).*
|
**
|
||||||
|
|
||||||
|
*These benchmarks were run on a MacBook Pro M1 Max using Go 1.22 and can be found [here](https://github.com/tidwall/gjson-benchmarks).*
|
||||||
|
|||||||
+130
-32
@@ -1040,6 +1040,10 @@ func parseObjectPath(path string) (r objectPathResult) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var vchars = [256]byte{
|
||||||
|
'"': 2, '{': 3, '(': 3, '[': 3, '}': 1, ')': 1, ']': 1,
|
||||||
|
}
|
||||||
|
|
||||||
func parseSquash(json string, i int) (int, string) {
|
func parseSquash(json string, i int) (int, string) {
|
||||||
// expects that the lead character is a '[' or '{' or '('
|
// expects that the lead character is a '[' or '{' or '('
|
||||||
// squash the value, ignoring all nested arrays and objects.
|
// squash the value, ignoring all nested arrays and objects.
|
||||||
@@ -1047,43 +1051,137 @@ func parseSquash(json string, i int) (int, string) {
|
|||||||
s := i
|
s := i
|
||||||
i++
|
i++
|
||||||
depth := 1
|
depth := 1
|
||||||
for ; i < len(json); i++ {
|
var c byte
|
||||||
if json[i] >= '"' && json[i] <= '}' {
|
for i < len(json) {
|
||||||
switch json[i] {
|
for i < len(json)-8 {
|
||||||
case '"':
|
jslice := json[i : i+8]
|
||||||
|
c = vchars[jslice[0]]
|
||||||
|
if c != 0 {
|
||||||
|
i += 0
|
||||||
|
goto token
|
||||||
|
}
|
||||||
|
c = vchars[jslice[1]]
|
||||||
|
if c != 0 {
|
||||||
|
i += 1
|
||||||
|
goto token
|
||||||
|
}
|
||||||
|
c = vchars[jslice[2]]
|
||||||
|
if c != 0 {
|
||||||
|
i += 2
|
||||||
|
goto token
|
||||||
|
}
|
||||||
|
c = vchars[jslice[3]]
|
||||||
|
if c != 0 {
|
||||||
|
i += 3
|
||||||
|
goto token
|
||||||
|
}
|
||||||
|
c = vchars[jslice[4]]
|
||||||
|
if c != 0 {
|
||||||
|
i += 4
|
||||||
|
goto token
|
||||||
|
}
|
||||||
|
c = vchars[jslice[5]]
|
||||||
|
if c != 0 {
|
||||||
|
i += 5
|
||||||
|
goto token
|
||||||
|
}
|
||||||
|
c = vchars[jslice[6]]
|
||||||
|
if c != 0 {
|
||||||
|
i += 6
|
||||||
|
goto token
|
||||||
|
}
|
||||||
|
c = vchars[jslice[7]]
|
||||||
|
if c != 0 {
|
||||||
|
i += 7
|
||||||
|
goto token
|
||||||
|
}
|
||||||
|
i += 8
|
||||||
|
}
|
||||||
|
c = vchars[json[i]]
|
||||||
|
if c == 0 {
|
||||||
|
i++
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
token:
|
||||||
|
if c == 2 {
|
||||||
|
// '"' string
|
||||||
|
i++
|
||||||
|
s2 := i
|
||||||
|
nextquote:
|
||||||
|
for i < len(json)-8 {
|
||||||
|
jslice := json[i : i+8]
|
||||||
|
if jslice[0] == '"' {
|
||||||
|
i += 0
|
||||||
|
goto strchkesc
|
||||||
|
}
|
||||||
|
if jslice[1] == '"' {
|
||||||
|
i += 1
|
||||||
|
goto strchkesc
|
||||||
|
}
|
||||||
|
if jslice[2] == '"' {
|
||||||
|
i += 2
|
||||||
|
goto strchkesc
|
||||||
|
}
|
||||||
|
if jslice[3] == '"' {
|
||||||
|
i += 3
|
||||||
|
goto strchkesc
|
||||||
|
}
|
||||||
|
if jslice[4] == '"' {
|
||||||
|
i += 4
|
||||||
|
goto strchkesc
|
||||||
|
}
|
||||||
|
if jslice[5] == '"' {
|
||||||
|
i += 5
|
||||||
|
goto strchkesc
|
||||||
|
}
|
||||||
|
if jslice[6] == '"' {
|
||||||
|
i += 6
|
||||||
|
goto strchkesc
|
||||||
|
}
|
||||||
|
if jslice[7] == '"' {
|
||||||
|
i += 7
|
||||||
|
goto strchkesc
|
||||||
|
}
|
||||||
|
i += 8
|
||||||
|
}
|
||||||
|
goto strchkstd
|
||||||
|
strchkesc:
|
||||||
|
if json[i-1] != '\\' {
|
||||||
i++
|
i++
|
||||||
s2 := i
|
continue
|
||||||
for ; i < len(json); i++ {
|
}
|
||||||
if json[i] > '\\' {
|
strchkstd:
|
||||||
continue
|
for i < len(json) {
|
||||||
}
|
if json[i] > '\\' || json[i] != '"' {
|
||||||
if json[i] == '"' {
|
|
||||||
// look for an escaped slash
|
|
||||||
if json[i-1] == '\\' {
|
|
||||||
n := 0
|
|
||||||
for j := i - 2; j > s2-1; j-- {
|
|
||||||
if json[j] != '\\' {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
n++
|
|
||||||
}
|
|
||||||
if n%2 == 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case '{', '[', '(':
|
|
||||||
depth++
|
|
||||||
case '}', ']', ')':
|
|
||||||
depth--
|
|
||||||
if depth == 0 {
|
|
||||||
i++
|
i++
|
||||||
return i, json[s:i]
|
continue
|
||||||
}
|
}
|
||||||
|
// look for an escaped slash
|
||||||
|
if json[i-1] == '\\' {
|
||||||
|
n := 0
|
||||||
|
for j := i - 2; j > s2-1; j-- {
|
||||||
|
if json[j] != '\\' {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
n++
|
||||||
|
}
|
||||||
|
if n%2 == 0 {
|
||||||
|
i++
|
||||||
|
goto nextquote
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// '{', '[', '(', '}', ']', ')'
|
||||||
|
// open close tokens
|
||||||
|
depth += int(c) - 2
|
||||||
|
if depth == 0 {
|
||||||
|
i++
|
||||||
|
return i, json[s:i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
i++
|
||||||
}
|
}
|
||||||
return i, json[s:]
|
return i, json[s:]
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1870,7 +1870,7 @@ github.com/test-go/testify/require
|
|||||||
# github.com/thejerf/suture/v4 v4.0.5
|
# github.com/thejerf/suture/v4 v4.0.5
|
||||||
## explicit; go 1.9
|
## explicit; go 1.9
|
||||||
github.com/thejerf/suture/v4
|
github.com/thejerf/suture/v4
|
||||||
# github.com/tidwall/gjson v1.17.3
|
# github.com/tidwall/gjson v1.18.0
|
||||||
## explicit; go 1.12
|
## explicit; go 1.12
|
||||||
github.com/tidwall/gjson
|
github.com/tidwall/gjson
|
||||||
# github.com/tidwall/match v1.1.1
|
# github.com/tidwall/match v1.1.1
|
||||||
|
|||||||
Reference in New Issue
Block a user