- Preserve order of iterable in viaSeq in Scala 2.13 (#330)
- Throw instead of overflowing silently when numeric values are out of range for the target type (#208)
- Convert Float to JsNumber directly without going through Double (#241)
- Build with latest Scala versions (#334)
Security fix for several Denial Of Service vulnerabilities:
- CVE-2018-18853: Limit the number of characters for numbers in the parser (#278)
- CVE-2018-18854: Use TreeMap instead of HashMap for JsObject to prevent collision attacks (#277)
- CVE-2018-18855: Fix uncontrolled recursion in parser by limiting nesting depth (#286)
Thanks, Andriy Plokhotnyuk who brought the first two issues to our attention.
For some fixes, we added new limits to the parser:
- Maximum depth of nested JSON values, defaults to 1000
- Maximum characters for number values, defaults to 100
We introduced a JsonParserSettings
class which can be used to customize these limits.
New overloads for JsonParser.apply
and String.parseJson
have been introduced to specify
custom settings.
- Replace ClassManifest by ClassTag
- Deprecate Pimp* classes and replace by Rich*
For Scala 2.12, this release brings no updates over 1.3.2 because the 2.12 release of 1.3.2 was released from a later version of the master branch. Version 1.3.3 brings the artifacts for Scala 2.10 and 2.11 also to this latest state.
- Fixed decoding of 4-byte UTF-8 characters
- Refactored UTF-8 decoding into better reusable superclass
- Decode BigInt / BigDecimal values from JsString (#182)
- Cross published for Scala 2.10.x, 2.11.x, and 2.12.x
- Fixed performance bottleneck in
ProductFormats::fromField
(#132) - Fixed multibyte chars at ix 0 of JSON String not being parsed correctly (#148)
- Fixed automatic field name discovery for member names with mangled prefix (#142)
- Reinstated deprecated
JsArray
andJsObject
List-based constructors for backwards compatibility - Added standard
OptionFormat
type (#151) - Exposed field name in deserialization errors if possible
- Improved name unmangling in ProductFormats (#138)
- Introduced
JsObject.empty
,JsArray.empty
,JsString.empty
andJsNumber.zero
(#143) - Made
JsonParser
require complete consumption of parsing input (#137)
- Fixed OutOfMemoryError when parsing unterminated JSON strings (#122)
- Fixed member names not being unmangled in ProductsFormats (#120)
- Upgraded to Scala 2.11.2, dropped support for Scala 2.9
- Switched to fast, hand-written parser (#86, #108)
- Removed dependency on parboiled
- Changed parser to produce JsObject(HashMap) rather than JsObject(ListMap)
- Switched JsArray(List) to JsArray(Vector)
- Improved JsonPrinter to support printing to custom StringBuilder
- Added support for parameter-less case classes (#41)
- Improved deserialization error message with name of malformed field (#62)
- Fixed broken
tuple7Format
(#66) - Fixed parsing problem for invalid hex digits (#75)
- Fixed
jsonFormat
method to ignore static fields (#76) - Fixed
JsonPrinter
unicode escaping to strictly match spec (#83, #46) - Fixed
null
handling inJsString
(#70) - Opened up JsonPrinter methods to overriding by marking them
protected
- Deprecated
asJson
method in favor ofparseJson
(#89) - Added OSGi metadata
- Upgraded to Scala 2.10.4 and parboiled 1.1.6, added cross-building for Scala 2.11
- Extended
jsonFormat
support for case classes w/ > 15 parameters, closed #48
- Upgraded to 2.10.1 and parboiled 1.1.5
- Added RootJsonFormats for JsObject and JsArray
- Added a jsonFormat0 with support for 0-ary case classes, thx to Connor Doyle
- Fixed automatic field name extraction with ignoring of transient fields
- Slightly improved JSON rendering performance
- Upgraded to SBT 0.12.3
- Upgraded to 2.10.0-RC3 and parboiled 1.1.4
- Fixed rendering problem for certain unicode escapes
- Upgraded to parboiled 1.1.3
- Upgraded to parboiled 1.1.2
- Cross-published for Scala 2.9.2 and Scala 2.10.0-RC1
- Upgraded to Scala 2.9.2 and parboiled 1.1.1
- Renamed group id from "cc.spray" to "io.spray"
- Renamed package from "cc.spray.json" to "spray.json"
- Fixed significant performance problem in JsonParser
- Improved automatic field name extraction for case classes
- Added automatic case class field name extraction via new jsonFormatX overloads
- Added 'asJson' extension method to Strings
- Added RootJsonFormat (JsonFormat for types corresponding to JSON document roots)
- Fixed problem of JSON object deserialization not being member-order independent (removed JsField, turned JsObject(List[JsField]) into JsObject(Map[String, JsValue]))
- Fixed issue #8 (Allow (de)serialization of NaN (Double)), thx to @stefritz
- Fixed #6 (rename JsValue:fromJson to 'convertTo', add .prettyPrint and .compactPrint)
- Improved deserialization error messages
- Upgraded to SBT 0.11.2
- Upgraded to Scala 2.9.1 and parboiled 1.0.2
- Improved (de)serialization of optional case class members (may now be missing)
- Added
NullOptions
trait for enforcing the serialization ofNone
members asnull
- Improved compile time error messages with @implicitNotFound annotations
- Improved documentation
- Smaller fixes and additions
first public release