json – 为没有字段的Java Enum创建读/写

前端之家收集整理的这篇文章主要介绍了json – 为没有字段的Java Enum创建读/写前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Play Framework的 JSON库,如何在没有字段的情况下为Java枚举创建读取和写入?

public enum EnumNoFields {
红色,
白色,
蓝色
}

implicit val EnumNoFieldsReads: Reads[EnumNoFields] = ?
implicit val EnumNoFieldsWrites: Writes[EnumNoFields] = ?

解决方法

通用解决方案如下所示:
def javaEnumFormat[E <: Enum[E] : ClassTag] = new Format[E] {
  override def reads(json: JsValue): JsResult[E] = json.validate[String] match {
    case JsSuccess(value,_) => try {
      val clazz = implicitly[ClassTag[E]].runtimeClass.asInstanceOf[Class[E]]
      JsSuccess(Enum.valueOf(clazz,value))
    } catch {
      case _: IllegalArgumentException => JsError("enumeration.unknown.value")
    }
    case JsError(_) => JsError("enumeration.expected.string")
  }

  override def writes(o: E): JsValue = JsString(o.toString)
}

您可以这样使用:

隐式val enumNoFieldsFormat = javaEnumFormat [EnumNoFields]

原文链接:https://www.f2er.com/js/151440.html

猜你在找的JavaScript相关文章