scala scala - Play Framework-JSON 객체에 필드 추가




format response (4)

간단한 방법은 argoanut ( http://argonaut.io/ )을 사용하는 것입니다.

var jField : Json.JsonField = "myfield" //Json.JsonField is of type String
obj1.asJson.->:(jField, obj2.asJson)  // adds a field to obj1.asJson

여기 obj1.asJson 은 JSON 객체를 생성하고 obj2obj1.asJson 의해 생성 된 json에 추가 될 객체입니다.

Scala를 사용하여 Play Framework의 Json 객체에 필드를 추가하는 데 문제가 있습니다.

데이터가 들어있는 사례 클래스가 있습니다. 예 :

case class ClassA(a:Int,b:Int)

Json Writes를 사용하여 Json 객체를 만들 수 있습니다.

val classAObject = ClassA(1,2)
implicit val classAWrites= Json.writes[ClassA]
val jsonObject = Json.toJson(classAObject)

Json은 다음과 같이 보입니다.

{ a:1, b:2 }

Json 객체에 추가 'c'필드를 추가하고 싶다고 가정 해 봅시다. 결과:

{ a:1, b:2, c:3 }

Json.obj를 사용하여 새 사례 클래스를 만들거나 내 Json 객체를 직접 만들지 않고 어떻게 할 수 있습니까? 나는 다음과 같은 것을 찾고있다.

jsonObject.merge({c:3}) 

어떤 도움을 주셔서 감사합니다!


JsObject 에는 필드를 객체에 추가 할 수있는 + 메소드가 있습니다.하지만 불행히도 jsonObjectjsonObjectjsonObject 로 정적으로 입력됩니다. 몇 가지 방법으로이 문제를 해결할 수 있습니다. 첫 번째 방법은 다음과 같이 사용 as .

 scala> jsonObject.as[JsObject] + ("c" -> Json.toJson(3))
 res0: play.api.libs.json.JsObject = {"a":1,"b":2,"c":3}

컴파일러에게 "당신은 이것이 JsValue 라는 것을 JsValue , JsObject 이기도합니다."라고 JsObject 있습니다. 이 경우에는 안전하지만 좋은 생각은 아닙니다. 보다 원칙적인 접근법은 OWrites 직접 사용하는 OWrites .

scala> val jsonObject = classAWrites.writes(classAObject)
jsonObject: play.api.libs.json.JsObject = {"a":1,"b":2}

scala> jsonObject + ("c" -> Json.toJson(3))
res1: play.api.libs.json.JsObject = {"a":1,"b":2,"c":3}

어쩌면 언젠가 Json 객체는 OWrites 인스턴스를 요구하는 OWrites 메소드를 가지게 될 것이고 이렇게 지나치게 명시적인 접근법은 필요하지 않을 것입니다.



jQuery UI datepicker 사용하기 - jQuery UI가 이미 포함되어있는 경우에만 의미가 있습니다.

$.datepicker.formatDate('MM d, yy', new Date(parseInt('/Date(1224043200000)/'.substr(6)))); 

산출:

2008 년 10 월 15 일







json scala playframework playframework-2.0