Created
May 9, 2018 11:10
-
-
Save deepankar14693/aba303bc79b7e692fa53f73786da0ba0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.json4s.{DefaultFormats, Formats, JNothing, JValue} | |
import org.json4s.native.JsonMethods.{parse => jParser} | |
import org.json4s.native.Serialization | |
import org.json4s.native.Serialization.{write => jWrite} | |
trait JsonHelper extends { | |
val EMPTY_STRING = "" | |
implicit val serialization: Serialization.type = Serialization | |
implicit val formats: Formats = DefaultFormats | |
/* | |
takes any type of value and serializes it to string | |
eg: val student = Student(1,"deepankar") | |
write(student) will serialize it to {"rollNum":1,"name":"deepankar"} | |
*/ | |
def write[T <: AnyRef](value: T): String = jWrite(value) | |
/* | |
Any valid json can be parsed into internal AST(Abstract Syntax Tree) format. | |
eg : If this is our json string coming from a post request | |
val jsonString = {"rollNum":1,"name":"deepankar"} | |
parse(jsonString) will parse it to something like | |
JObject(List((rollNum,JInt(1)), (name,JString(deepankar)))) | |
*/ | |
protected def parse(value: String): JValue = jParser(value) | |
implicit protected def extractOrEmptyString(json: JValue): String = { | |
json match { | |
case JNothing => EMPTY_STRING | |
case data => data.extract[String] | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment