json 1.6.7-java → 1.6.8-java
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of json might be problematic. Click here for more details.
- data/lib/json/common.rb +14 -7
- data/lib/json/ext/generator.jar +0 -0
- data/lib/json/ext/parser.jar +0 -0
- data/lib/json/pure/parser.rb +4 -4
- data/lib/json/version.rb +1 -1
- data/tests/test_json.rb +8 -2
- data/tests/test_json_addition.rb +32 -24
- data/tests/test_json_string_matching.rb +5 -6
- metadata +94 -101
data/lib/json/common.rb
CHANGED
@@ -293,21 +293,28 @@ module JSON
|
|
293
293
|
attr_accessor :load_default_options
|
294
294
|
end
|
295
295
|
self.load_default_options = {
|
296
|
-
:max_nesting
|
297
|
-
:allow_nan
|
298
|
-
:quirks_mode
|
296
|
+
:max_nesting => false,
|
297
|
+
:allow_nan => true,
|
298
|
+
:quirks_mode => true,
|
299
|
+
:create_additions => true,
|
299
300
|
}
|
300
301
|
|
301
302
|
# Load a ruby data structure from a JSON _source_ and return it. A source can
|
302
303
|
# either be a string-like object, an IO-like object, or an object responding
|
303
304
|
# to the read method. If _proc_ was given, it will be called with any nested
|
304
|
-
# Ruby object as an argument recursively in depth first order.
|
305
|
-
# options
|
305
|
+
# Ruby object as an argument recursively in depth first order. To modify the
|
306
|
+
# default options pass in the optional _options_ argument as well.
|
307
|
+
#
|
308
|
+
# BEWARE: This method is meant to serialise data from trusted user input,
|
309
|
+
# like from your own database server or clients under your control, it could
|
310
|
+
# be dangerous to allow untrusted users to pass JSON sources into it. The
|
311
|
+
# default options for the parser can be changed via the load_default_options
|
312
|
+
# method.
|
306
313
|
#
|
307
314
|
# This method is part of the implementation of the load/dump interface of
|
308
315
|
# Marshal and YAML.
|
309
|
-
def load(source, proc = nil)
|
310
|
-
opts = load_default_options
|
316
|
+
def load(source, proc = nil, options = {})
|
317
|
+
opts = load_default_options.merge options
|
311
318
|
if source.respond_to? :to_str
|
312
319
|
source = source.to_str
|
313
320
|
elsif source.respond_to? :to_io
|
data/lib/json/ext/generator.jar
CHANGED
Binary file
|
data/lib/json/ext/parser.jar
CHANGED
Binary file
|
data/lib/json/pure/parser.rb
CHANGED
@@ -63,9 +63,9 @@ module JSON
|
|
63
63
|
# * *symbolize_names*: If set to true, returns symbols for the names
|
64
64
|
# (keys) in a JSON object. Otherwise strings are returned, which is also
|
65
65
|
# the default.
|
66
|
-
# * *create_additions*: If set to
|
67
|
-
# additions
|
68
|
-
# defaults to
|
66
|
+
# * *create_additions*: If set to true, the Parser creates
|
67
|
+
# additions when if a matching class and create_id was found. This
|
68
|
+
# option defaults to false.
|
69
69
|
# * *object_class*: Defaults to Hash
|
70
70
|
# * *array_class*: Defaults to Array
|
71
71
|
# * *quirks_mode*: Enables quirks_mode for parser, that is for example
|
@@ -88,7 +88,7 @@ module JSON
|
|
88
88
|
if opts.key?(:create_additions)
|
89
89
|
@create_additions = !!opts[:create_additions]
|
90
90
|
else
|
91
|
-
@create_additions =
|
91
|
+
@create_additions = false
|
92
92
|
end
|
93
93
|
@create_id = @create_additions ? JSON.create_id : nil
|
94
94
|
@object_class = opts[:object_class] || Hash
|
data/lib/json/version.rb
CHANGED
data/tests/test_json.rb
CHANGED
@@ -329,12 +329,12 @@ class TestJSON < Test::Unit::TestCase
|
|
329
329
|
def test_generate_core_subclasses_with_new_to_json
|
330
330
|
obj = SubHash2["foo" => SubHash2["bar" => true]]
|
331
331
|
obj_json = JSON(obj)
|
332
|
-
obj_again = JSON(obj_json)
|
332
|
+
obj_again = JSON.parse(obj_json, :create_additions => true)
|
333
333
|
assert_kind_of SubHash2, obj_again
|
334
334
|
assert_kind_of SubHash2, obj_again['foo']
|
335
335
|
assert obj_again['foo']['bar']
|
336
336
|
assert_equal obj, obj_again
|
337
|
-
assert_equal ["foo"], JSON(JSON(SubArray2["foo"]))
|
337
|
+
assert_equal ["foo"], JSON(JSON(SubArray2["foo"]), :create_additions => true)
|
338
338
|
end
|
339
339
|
|
340
340
|
def test_generate_core_subclasses_with_default_to_json
|
@@ -493,6 +493,12 @@ EOT
|
|
493
493
|
assert_equal nil, JSON.load('')
|
494
494
|
end
|
495
495
|
|
496
|
+
def test_load_with_options
|
497
|
+
small_hash = JSON("foo" => 'bar')
|
498
|
+
symbol_hash = { :foo => 'bar' }
|
499
|
+
assert_equal symbol_hash, JSON.load(small_hash, nil, :symbolize_names => true)
|
500
|
+
end
|
501
|
+
|
496
502
|
def test_dump
|
497
503
|
too_deep = '[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]'
|
498
504
|
assert_equal too_deep, JSON.dump(eval(too_deep))
|
data/tests/test_json_addition.rb
CHANGED
@@ -73,11 +73,19 @@ class TestJSONAddition < Test::Unit::TestCase
|
|
73
73
|
a = A.new(666)
|
74
74
|
assert A.json_creatable?
|
75
75
|
json = generate(a)
|
76
|
-
a_again = JSON.parse(json)
|
76
|
+
a_again = JSON.parse(json, :create_additions => true)
|
77
77
|
assert_kind_of a.class, a_again
|
78
78
|
assert_equal a, a_again
|
79
79
|
end
|
80
80
|
|
81
|
+
def test_extended_json_default
|
82
|
+
a = A.new(666)
|
83
|
+
assert A.json_creatable?
|
84
|
+
json = generate(a)
|
85
|
+
a_hash = JSON.parse(json)
|
86
|
+
assert_kind_of Hash, a_hash
|
87
|
+
end
|
88
|
+
|
81
89
|
def test_extended_json_disabled
|
82
90
|
a = A.new(666)
|
83
91
|
assert A.json_creatable?
|
@@ -104,7 +112,7 @@ class TestJSONAddition < Test::Unit::TestCase
|
|
104
112
|
c = C.new
|
105
113
|
assert !C.json_creatable?
|
106
114
|
json = generate(c)
|
107
|
-
assert_raises(ArgumentError, NameError) { JSON.parse(json) }
|
115
|
+
assert_raises(ArgumentError, NameError) { JSON.parse(json, :create_additions => true) }
|
108
116
|
end
|
109
117
|
|
110
118
|
def test_raw_strings
|
@@ -122,7 +130,7 @@ class TestJSONAddition < Test::Unit::TestCase
|
|
122
130
|
assert_match(/\A\{.*\}\Z/, json)
|
123
131
|
assert_match(/"json_class":"String"/, json)
|
124
132
|
assert_match(/"raw":\[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255\]/, json)
|
125
|
-
raw_again = JSON.parse(json)
|
133
|
+
raw_again = JSON.parse(json, :create_additions => true)
|
126
134
|
assert_equal raw, raw_again
|
127
135
|
end
|
128
136
|
|
@@ -130,17 +138,17 @@ class TestJSONAddition < Test::Unit::TestCase
|
|
130
138
|
|
131
139
|
def test_core
|
132
140
|
t = Time.now
|
133
|
-
assert_equal t, JSON(JSON(t))
|
141
|
+
assert_equal t, JSON(JSON(t), :create_additions => true)
|
134
142
|
d = Date.today
|
135
|
-
assert_equal d, JSON(JSON(d))
|
143
|
+
assert_equal d, JSON(JSON(d), :create_additions => true)
|
136
144
|
d = DateTime.civil(2007, 6, 14, 14, 57, 10, Rational(1, 12), 2299161)
|
137
|
-
assert_equal d, JSON(JSON(d))
|
138
|
-
assert_equal 1..10, JSON(JSON(1..10))
|
139
|
-
assert_equal 1...10, JSON(JSON(1...10))
|
140
|
-
assert_equal "a".."c", JSON(JSON("a".."c"))
|
141
|
-
assert_equal "a"..."c", JSON(JSON("a"..."c"))
|
145
|
+
assert_equal d, JSON(JSON(d), :create_additions => true)
|
146
|
+
assert_equal 1..10, JSON(JSON(1..10), :create_additions => true)
|
147
|
+
assert_equal 1...10, JSON(JSON(1...10), :create_additions => true)
|
148
|
+
assert_equal "a".."c", JSON(JSON("a".."c"), :create_additions => true)
|
149
|
+
assert_equal "a"..."c", JSON(JSON("a"..."c"), :create_additions => true)
|
142
150
|
s = MyJsonStruct.new 4711, 'foot'
|
143
|
-
assert_equal s, JSON(JSON(s))
|
151
|
+
assert_equal s, JSON(JSON(s), :create_additions => true)
|
144
152
|
struct = Struct.new :foo, :bar
|
145
153
|
s = struct.new 4711, 'foot'
|
146
154
|
assert_raises(JSONError) { JSON(s) }
|
@@ -148,41 +156,41 @@ class TestJSONAddition < Test::Unit::TestCase
|
|
148
156
|
raise TypeError, "test me"
|
149
157
|
rescue TypeError => e
|
150
158
|
e_json = JSON.generate e
|
151
|
-
e_again = JSON e_json
|
159
|
+
e_again = JSON e_json, :create_additions => true
|
152
160
|
assert_kind_of TypeError, e_again
|
153
161
|
assert_equal e.message, e_again.message
|
154
162
|
assert_equal e.backtrace, e_again.backtrace
|
155
163
|
end
|
156
|
-
assert_equal(/foo/, JSON(JSON(/foo/)))
|
157
|
-
assert_equal(/foo/i, JSON(JSON(/foo/i)))
|
164
|
+
assert_equal(/foo/, JSON(JSON(/foo/), :create_additions => true))
|
165
|
+
assert_equal(/foo/i, JSON(JSON(/foo/i), :create_additions => true))
|
158
166
|
end
|
159
167
|
|
160
168
|
def test_utc_datetime
|
161
169
|
now = Time.now
|
162
|
-
d = DateTime.parse(now.to_s) # usual case
|
163
|
-
assert_equal d, JSON.parse(d.to_json)
|
170
|
+
d = DateTime.parse(now.to_s, :create_additions => true) # usual case
|
171
|
+
assert_equal d, JSON.parse(d.to_json, :create_additions => true)
|
164
172
|
d = DateTime.parse(now.utc.to_s) # of = 0
|
165
|
-
assert_equal d, JSON.parse(d.to_json)
|
173
|
+
assert_equal d, JSON.parse(d.to_json, :create_additions => true)
|
166
174
|
d = DateTime.civil(2008, 6, 17, 11, 48, 32, Rational(1,24))
|
167
|
-
assert_equal d, JSON.parse(d.to_json)
|
175
|
+
assert_equal d, JSON.parse(d.to_json, :create_additions => true)
|
168
176
|
d = DateTime.civil(2008, 6, 17, 11, 48, 32, Rational(12,24))
|
169
|
-
assert_equal d, JSON.parse(d.to_json)
|
177
|
+
assert_equal d, JSON.parse(d.to_json, :create_additions => true)
|
170
178
|
end
|
171
179
|
|
172
180
|
def test_rational_complex
|
173
|
-
assert_equal Rational(2, 9), JSON(JSON(Rational(2, 9)))
|
174
|
-
assert_equal Complex(2, 9), JSON(JSON(Complex(2, 9)))
|
181
|
+
assert_equal Rational(2, 9), JSON.parse(JSON(Rational(2, 9)), :create_additions => true)
|
182
|
+
assert_equal Complex(2, 9), JSON.parse(JSON(Complex(2, 9)), :create_additions => true)
|
175
183
|
end
|
176
184
|
|
177
185
|
def test_bigdecimal
|
178
|
-
assert_equal BigDecimal('3.141', 23), JSON(JSON(BigDecimal('3.141', 23)))
|
179
|
-
assert_equal BigDecimal('3.141', 666), JSON(JSON(BigDecimal('3.141', 666)))
|
186
|
+
assert_equal BigDecimal('3.141', 23), JSON(JSON(BigDecimal('3.141', 23)), :create_additions => true)
|
187
|
+
assert_equal BigDecimal('3.141', 666), JSON(JSON(BigDecimal('3.141', 666)), :create_additions => true)
|
180
188
|
end
|
181
189
|
|
182
190
|
def test_ostruct
|
183
191
|
o = OpenStruct.new
|
184
192
|
# XXX this won't work; o.foo = { :bar => true }
|
185
193
|
o.foo = { 'bar' => true }
|
186
|
-
assert_equal o, JSON(JSON(o))
|
194
|
+
assert_equal o, JSON.parse(JSON(o), :create_additions => true)
|
187
195
|
end
|
188
196
|
end
|
@@ -27,14 +27,13 @@ class TestJSONStringMatching < Test::Unit::TestCase
|
|
27
27
|
t = TestTime.new
|
28
28
|
t_json = [ t ].to_json
|
29
29
|
assert_equal [ t ],
|
30
|
-
JSON.parse(t_json,
|
31
|
-
:match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\
|
30
|
+
JSON.parse(t_json, :create_additions => true,
|
31
|
+
:match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\z/ => TestTime })
|
32
32
|
assert_equal [ t.strftime('%FT%T%z') ],
|
33
|
-
JSON.parse(t_json,
|
34
|
-
:match_string => { /\A\d{3}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\
|
33
|
+
JSON.parse(t_json, :create_additions => true,
|
34
|
+
:match_string => { /\A\d{3}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\z/ => TestTime })
|
35
35
|
assert_equal [ t.strftime('%FT%T%z') ],
|
36
36
|
JSON.parse(t_json,
|
37
|
-
:match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\
|
38
|
-
:create_additions => false)
|
37
|
+
:match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\z/ => TestTime })
|
39
38
|
end
|
40
39
|
end
|
metadata
CHANGED
@@ -1,121 +1,114 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: json
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 1.6.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 1.6.8
|
6
6
|
platform: java
|
7
|
-
authors:
|
8
|
-
|
9
|
-
autorequire:
|
7
|
+
authors:
|
8
|
+
- Daniel Luz
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2012-04-28 00:00:00 Z
|
12
|
+
date: 2013-02-10 00:00:00.000000000 Z
|
14
13
|
dependencies: []
|
15
|
-
|
16
14
|
description: A JSON implementation as a JRuby extension.
|
17
15
|
email: dev+ruby@mernen.com
|
18
16
|
executables: []
|
19
|
-
|
20
17
|
extensions: []
|
21
|
-
|
22
18
|
extra_rdoc_files: []
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
- tests/fixtures/fail19.json
|
19
|
+
files:
|
20
|
+
- lib/json.rb
|
21
|
+
- lib/json/version.rb
|
22
|
+
- lib/json/common.rb
|
23
|
+
- lib/json/ext.rb
|
24
|
+
- lib/json/pure.rb
|
25
|
+
- lib/json/light_object.rb
|
26
|
+
- lib/json/add/symbol.rb
|
27
|
+
- lib/json/add/struct.rb
|
28
|
+
- lib/json/add/complex.rb
|
29
|
+
- lib/json/add/rational.rb
|
30
|
+
- lib/json/add/exception.rb
|
31
|
+
- lib/json/add/time.rb
|
32
|
+
- lib/json/add/bigdecimal.rb
|
33
|
+
- lib/json/add/date_time.rb
|
34
|
+
- lib/json/add/core.rb
|
35
|
+
- lib/json/add/range.rb
|
36
|
+
- lib/json/add/date.rb
|
37
|
+
- lib/json/add/regexp.rb
|
38
|
+
- lib/json/add/ostruct.rb
|
39
|
+
- lib/json/pure/generator.rb
|
40
|
+
- lib/json/pure/parser.rb
|
41
|
+
- lib/json/ext/generator.jar
|
42
|
+
- lib/json/ext/parser.jar
|
43
|
+
- tests/test_json_string_matching.rb
|
44
|
+
- tests/test_json_fixtures.rb
|
45
|
+
- tests/setup_variant.rb
|
46
|
+
- tests/test_json_unicode.rb
|
47
|
+
- tests/test_json_addition.rb
|
48
|
+
- tests/test_json_generate.rb
|
49
|
+
- tests/test_json_encoding.rb
|
50
|
+
- tests/test_json.rb
|
51
|
+
- tests/fixtures/fail6.json
|
52
|
+
- tests/fixtures/fail9.json
|
53
|
+
- tests/fixtures/fail10.json
|
54
|
+
- tests/fixtures/fail24.json
|
55
|
+
- tests/fixtures/fail28.json
|
56
|
+
- tests/fixtures/fail13.json
|
57
|
+
- tests/fixtures/fail4.json
|
58
|
+
- tests/fixtures/pass3.json
|
59
|
+
- tests/fixtures/fail11.json
|
60
|
+
- tests/fixtures/fail14.json
|
61
|
+
- tests/fixtures/fail3.json
|
62
|
+
- tests/fixtures/fail12.json
|
63
|
+
- tests/fixtures/pass16.json
|
64
|
+
- tests/fixtures/pass15.json
|
65
|
+
- tests/fixtures/fail20.json
|
66
|
+
- tests/fixtures/fail8.json
|
67
|
+
- tests/fixtures/pass2.json
|
68
|
+
- tests/fixtures/fail5.json
|
69
|
+
- tests/fixtures/fail1.json
|
70
|
+
- tests/fixtures/fail25.json
|
71
|
+
- tests/fixtures/pass17.json
|
72
|
+
- tests/fixtures/fail7.json
|
73
|
+
- tests/fixtures/pass26.json
|
74
|
+
- tests/fixtures/fail21.json
|
75
|
+
- tests/fixtures/pass1.json
|
76
|
+
- tests/fixtures/fail23.json
|
77
|
+
- tests/fixtures/fail18.json
|
78
|
+
- tests/fixtures/fail2.json
|
79
|
+
- tests/fixtures/fail22.json
|
80
|
+
- tests/fixtures/fail27.json
|
81
|
+
- tests/fixtures/fail19.json
|
87
82
|
homepage: http://json-jruby.rubyforge.org/
|
88
83
|
licenses: []
|
89
|
-
|
90
|
-
post_install_message:
|
84
|
+
post_install_message:
|
91
85
|
rdoc_options: []
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
86
|
+
require_paths:
|
87
|
+
- lib
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
segments:
|
93
|
+
- 0
|
94
|
+
hash: 2
|
95
|
+
version: !binary |-
|
96
|
+
MA==
|
96
97
|
none: false
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
segments:
|
103
|
+
- 0
|
104
|
+
hash: 2
|
105
|
+
version: !binary |-
|
106
|
+
MA==
|
105
107
|
none: false
|
106
|
-
requirements:
|
107
|
-
- - ">="
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
hash: 2
|
110
|
-
segments:
|
111
|
-
- 0
|
112
|
-
version: "0"
|
113
108
|
requirements: []
|
114
|
-
|
115
109
|
rubyforge_project: json-jruby
|
116
|
-
rubygems_version: 1.8.
|
117
|
-
signing_key:
|
110
|
+
rubygems_version: 1.8.24
|
111
|
+
signing_key:
|
118
112
|
specification_version: 3
|
119
113
|
summary: JSON implementation for JRuby
|
120
114
|
test_files: []
|
121
|
-
|