Class

org.zalando.sweetcherry.JsonPartialConverter

JsonPartial

Related Doc: package JsonPartialConverter

Permalink

implicit class JsonPartial extends AnyRef

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. JsonPartial
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Instance Constructors

  1. new JsonPartial(originalJson: JsValue)

    Permalink

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  10. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  14. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  15. def selectFields(fields: Seq[Field]): JsValue

    Permalink

    Selects fields from the original JSON.

    Selects fields from the original JSON. Typical use case scenario for this method is when one wants to control the full flow from parsing to selecting fields from JSON. Most likely you will use this method in combination with FieldsStringValidator class.

    Example:

    import org.zalando.sweetcherry.JsonPartialConverter._
    
    ...
    
    val jsonString = """{ "uid": "12345", "color": "red", "brand": "nike" }"""
    FieldsStringValidator.validate("uid,another_field") match {
      case InvalidFieldsString(error) =>
        // handle string parsing error
      case ValidFieldsString(fields) =>
        // string is OK and can be parsed into collections of fields
        Json.parse(jsonString).selectFields(fields)
    }
  16. def selectFields(fieldsStr: Option[String]): Either[FieldParserFailure, JsValue]

    Permalink

    Parses input string and selects fields specified in this string.

    Parses input string and selects fields specified in this string. Example:

    import org.zalando.sweetcherry.JsonPartialConverter._
    
    ...
    
    val jsonString = """{ "uid": "12345", "color": "red", "brand": "nike" }"""
    val json: JsValue = Json.parse(jsonString).selectFields("uid,color") match {
     case Right(transformedJson) =>
       // will be { "uid": "12345", "color": "red" }
       transformedJson
     case Left(error) =>
       // here you can return original json instead of an error
       Json.parse(s"""{ "error": "${error.message}" }""")
    }
    fieldsStr

    input fields string

    returns

    either parser failure with explanation message or JsValue which contains only selected fields. Structure of original JSON will be preserved. You can select nested fields without modification of code of your API clients which most likely will rely on original JSON structure). This method will return original JSON if field string was not specified or when it's empty.

  17. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  18. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  19. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped