spray-json icon indicating copy to clipboard operation
spray-json copied to clipboard

Spary Json cannot handle Infinity

Open liuauto opened this issue 8 years ago • 1 comments

It seems that if the json file contains Infinity, then spary cannot handle it. Now our code try to use parseJson.convertTo[A] to convert it to a case class A and it throws error because it is supposed to be a double. I know it may be difficult to handle different types for Infinity but is there solution to get around this problem ?

spray.json.DeserializationException: Expected Double as JsNumber, but got "Infinity" 813622 at spray.json.package$.deserializationError(package.scala:23) 813623 at spray.json.ProductFormats$class.fromField(ProductFormats.scala:62) 813624 at com.conversantmedia.io.JSONReader$.fromField(JSONReader.scala:11) 813625 at spray.json.ProductFormatsInstances$$anon$13.read(ProductFormatsInstances.scala:430) 813626 at spray.json.ProductFormatsInstances$$anon$13.read(ProductFormatsInstances.scala:398) 813627 at spray.json.JsValue.convertTo(JsValue.scala:31) 813628 at spray.json.CollectionFormats$$anon$4$$anonfun$read$4.apply(CollectionFormats.scala:89) 813629 at spray.json.CollectionFormats$$anon$4$$anonfun$read$4.apply(CollectionFormats.scala:89) 813630 at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) 813631 at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) 813632 at scala.collection.Iterator$class.foreach(Iterator.scala:742) 813633 at scala.collection.AbstractIterator.foreach(Iterator.scala:1194) 813634 at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) 813635 at scala.collection.AbstractIterable.foreach(Iterable.scala:54) 813636 at scala.collection.TraversableLike$class.map(TraversableLike.scala:245) 813637 at scala.collection.AbstractTraversable.map(Traversable.scala:104) 813638 at spray.json.CollectionFormats$$anon$4.read(CollectionFormats.scala:89) 813639 at spray.json.CollectionFormats$$anon$4.read(CollectionFormats.scala:86) 813640 at spray.json.JsValue.convertTo(JsValue.scala:31)

liuauto avatar Oct 26 '16 22:10 liuauto

Hi @liuauto. Please check with json spec for numeric type. Javascript Infinity isn't a valid json number. Thanks.

ancane avatar Dec 02 '16 16:12 ancane