【发布时间】:2023-03-23 09:13:01
【问题描述】:
我对 scala 、游戏框架和 argonaut 还很陌生。 以下是我的案例类,其中包含 List[Remedy] 类型的变量 我的目标是生成一个包含 List[Remedy] 的 JsonArray 的 PredictionModel 对象的 json 响应。
package models
import scala.collection.mutable.ListBuffer
import argonaut._, Argonaut._
/**
* Created by abhishek on 15/01/16.
*/
case class PredictionModel() {
var aboutKundali: AboutKundli = new AboutKundli()
var planetStatus = new ListBuffer[PlanetStatus].toList
var donate = ""
var notToDonate = ""
var colorNotToWear = ""
var favouredGod = ""
var aboutEducationAndOccupation = ""
var mixMahaDashaCurrent = ""
var mixMahaDashaNotCurrent = ""
var category = ""
var rinnPitri = ""
var lifeHead = ""
var disease = ""
var occupation = ""
var marriedLife = ""
var santan = ""
var parents = ""
var nature = ""
var remedyList = new ListBuffer[Remedy].toList
var importantInformation = ""
}
PredictionModel 的隐式写法如下:-
implicit def predicationEncodeJson: EncodeJson[PredictionModel] =
EncodeJson((prediction: PredictionModel) =>
("about_kundali" := argonaut.Json(
"birth_rashi" := prediction.aboutKundali.birthRashi,
"lagan_rashi" := prediction.aboutKundali.laganRashi,
"birth_day_planet" := prediction.aboutKundali.birthDayPlanet,
"birth_time_planet" := prediction.aboutKundali.birthTimePlanet,
"current_maha_dasha" := prediction.aboutKundali.currentMahaDasha,
"lucky_day" := prediction.aboutKundali.luckyDay,
"lucky_number" := prediction.aboutKundali.luckyNumber
)) ->:
("important_information" := prediction.importantInformation) ->:
("rinnPitri" := prediction.rinnPitri) ->:
("category" := prediction.category) ->:
("mix_mahadasha_not_current" := prediction.mixMahaDashaNotCurrent) ->:
("mix_mahadasha_current" := prediction.mixMahaDashaCurrent) ->:
("about_education_and_occupation" := prediction.aboutEducationAndOccupation) ->:
("favored_god" := prediction.favouredGod) ->:
("color_not_to_wear" := prediction.colorNotToWear) ->:
("donate" := prediction.donate) ->:
("not_to_donate" := prediction.notToDonate) ->: jEmptyObject)
关于运行的一切都很好,但是我应该怎么做才能将 JsonArray 添加到 prodiction Json 对象中
编辑 1 这里建议的是我的测试用例类
import argonaut._, Argonaut._
case class TestModel(id: Int, name: String) {
}
object TestModel{
implicit def PredictionModelCodecJson = CodecJson[TestModel] =
casecodec20(TestModel.apply, TestModel.unapply)("id", "name")
}
在声明 casecodec20 时,我在 apply 和 unapply 方法中出现错误。 我需要超越它们吗? 另外如何调用这个隐式值?
编辑 2
所以这是需要做的。 使用 constrcutor 中的所有参数创建案例类以及包含 CodecJson 的后续对象类,如下所示
case class Remedy(no: Int, description: String) {
}
object Remedy{
implicit def RemedyCodecJson: CodecJson[Remedy] =
casecodec2(Remedy.apply, Remedy.unapply)("number", "description")
}
在我的例子中,我在模型中有更复杂的模型,所以我只是为所有人创建了隐式 CodecJson。 怎么用?
remedy.asJson
【问题讨论】:
-
我应该怎么做才能将 JsonArray 添加到 prodiction Json 对象中您想将
remedyList添加到输出的 JSON 中? -
@YuvalItzchakov 是的,这就是我要找的
标签: scala playframework