What to use in the face of deprecation of the scala.util.parsing.json._ package?

10,110

Solution 1

Usually, this means a piece of functionality has been superseded by another implementation the use of which is preferred over the old one and a question like this simply means the OP is too lazy to google the docs. This is especially true in case of libraries in the Java language, which treats backward compatibility very seriously (to the point it becomes a pain for some). The Scala ecosystem is not so strict in this regard and upgrading to a newer version of the language means you can get a different API or even binary incompabilities. See also Scala: binary incompatibility between releases. This is not a comment against Scala. There are good reasons these incompatibilities exist.

However, I must admit that the documentation for scala.util.parsing.json does not contain any information regarding the recommended replacement for this functionality whatsoever. It took me quite a while to dig up something that just barely resembles a clear statement of what the recommended replacement is.

There seems to have been a lot of discussion in the community about the point and repercussions of this deprecation. I recommend reading this thread in the scala-users group if you're interested.

The most quoted reasons for this deprecation seem to be around poor performance and thread safety.

The deprecation was done as part of this Jira issue and the use of different parsers is recommended in the closing comment of this related task that was not completed due to the deprecation.

Alternatives include:

To answer your question. This is a warning, your code should not break until this object is actually removed. However, if new bugs are found in this functionality, they most likely aren't going to be fixed. Your code can also break if you upgrade to a newer version of Scala that actually has those packages removed (Version 2.11.0 and above, according to the documentation)

Solution 2

The answer previously provided by @toniedzwiedz is very complete and describe the whole story around the question. I just had the same issue using Scala 2.11 and I solved adding the dependencies which are in this repository. In particular, for Scala 2.11 is:

<dependency>
    <groupId>org.scala-lang.modules</groupId>
    <artifactId>scala-parser-combinators_2.11</artifactId>
    <version>1.1.0</version>
</dependency>

Then you will not have the warning.

Share:
10,110

Related videos on Youtube

BeachBird
Author by

BeachBird

Updated on September 15, 2022

Comments

  • BeachBird
    BeachBird over 1 year

    How to solve Scala Problem? I have warning by JSON usage in my project:

    Object JSON in package json is depricated. This object will be removed.

    import scala.util.parsing.json._
    JSON.parseRaw("[{'a':'b'},{'c':'d'}]")
    
  • pootow
    pootow almost 3 years
    I don't know why this answer is downvoted