समस्याग्रस्त कोड और अधिक या कम इस तरह देखा:
import play.api.libs.json._
object Test {
def main(args: Array[String]): Unit = {
case class Resident(name: String, age: Int, role: Option[String])
implicit val residentWrites = Json.writes[Resident]
println(Json.toJson(Resident("john", 33, None)))
}
}
यहां मुद्दा यह था कि इस मैक्रो जाहिरा तौर तरीकों के अंदर परिभाषित वर्गों के लिए काम नहीं करता। यह एक परेशान सीमा नहीं है हालांकि हम इस तरह की चीजें नहीं करते हैं।
मुद्दा वर्ग डीईएफ़ को हल करने के लिए कहीं और ले जाया जा सकता वस्तु स्तर की तरह
object Test {
case class Resident(name: String, age: Int, role: Option[String])
def main(args: Array[String]): Unit = {
implicit val residentWrites = Json.writes[Resident]
println(Json.toJson(Resident("john", 33, None)))
}
}
या फ़ाइल स्तर
case class Resident(name: String, age: Int, role: Option[String])
object Test {
def main(args: Array[String]): Unit = {
implicit val residentWrites = Json.writes[Resident]
println(Json.toJson(Resident("john", 33, None)))
}
}
मैं, समझते हैं कि यह कम से कम उदाहरण देखने के लिए परीक्षण प्रयोजनों के लिए केवल था, लेकिन मैं अभी भी उल्लेख करूंगा कि हम आमतौर पर कक्षाओं को Writes
के साथ परिभाषित करते हैं।
object Resident {
implicit val residentWrites = Json.writes[Resident]
}
case class Resident(name: String, age: Int, role: Option[String])
इस तरह, जब भी आप Resident
आयात करते हैं, अपने लेखन निहित दायरे में होगा।
मेरे लिए यह बस असफल नहीं होता है। मैं एएमएम प्रतिलिपि खोलता हूं, 'load.ivy (" com.typesafe.play "%%" play "%" 2.5.0 ") के माध्यम से निर्भरता प्राप्त करें और '4" नाम प्राप्त करने वाले कोड की अपनी 4 पंक्तियों को पेस्ट करें: "जॉन" , "उम्र": 33} '। यह त्रुटि आमतौर पर तब होती है जब आपकी 'कक्षा' 'केस क्लास' नहीं होती है, लेकिन सबकुछ ठीक है। –
वाह, मुझे अम्मोनियों के बारे में पता नहीं था! यह बहुत अच्छा लग रहा है, मैं इसे अब कोशिश करूँगा –
हां, यह एएमएम प्रतिलिपि से भी मेरे लिए काम करता है। : ओ मैं फिर से अपनी परियोजना –