স্কালায় JSON গ্রন্থাগারটি কী ব্যবহার করবেন? [বন্ধ]


125

আমার একটি জেএসএন স্ট্রিং তৈরি করতে হবে, এরকম কিছু:

[
  { 'id': 1, 'name': 'John'},
  { 'id': 2, 'name': 'Dani'}
]

val jArray = JsArray();
jArray += (("id", "1"), ("name", "John"))
jArray += (("id", "2"), ("name", "Dani"))
println(jArray.dump)

আমার কাছে সারি সারি যুক্ত করতে সক্ষম হওয়া দরকার jArraysomethingjArray += ...

এর নিকটতম গ্রন্থাগার / সমাধান কী?


উত্তর:


219

দুর্ভাগ্যক্রমে একটি জেএসওএন লাইব্রেরি লেখাই টোডো তালিকা অ্যাপ্লিকেশনটির কোডিংয়ের স্কালা সম্প্রদায়ের সংস্করণ।

বেশ কয়েকটি বিকল্প রয়েছে। আমি এগুলিকে নোট সহ কোনও বিশেষ ক্রমে তালিকাভুক্ত করছি:

  1. parsing.json.JSON - সতর্কতা এই লাইব্রেরিটি কেবলমাত্র স্কাল সংস্করণ 2.9.x অবধি উপলব্ধ (নতুন সংস্করণে সরানো হয়েছে)
  2. স্প্রে-জেসন - স্প্রে প্রকল্প থেকে বের করা
  3. Jerkson ± - সতর্কবাণী একটা চমৎকার গ্রন্থাগার (জাভা জ্যাকসন উপরে নির্মিত) কিন্তু এখন abandonware। আপনি যদি এটি ব্যবহার করতে যাচ্ছেন তবে সম্ভবত স্কালডিং প্রকল্পের উদাহরণ অনুসরণ করুন এবং ব্যাকচ্যাট.আইও ফর্কটি ব্যবহার করুন
  4. sjson - লিখেছেন দেবাশীষ ঘোষ
  5. লিফট-জসন - লিফট প্রকল্প থেকে পৃথকভাবে ব্যবহার করা যেতে পারে
  6. json4s 💣 § ± - লিফট- জসন থেকে একটি নিষ্কাশন, যা একটি স্ট্যান্ডার্ড জেএসএন এএসটি তৈরি করার চেষ্টা করছে যা অন্যান্য জেএসওন লাইব্রেরি ব্যবহার করতে পারে। একটি জ্যাকসন-সমর্থিত বাস্তবায়ন অন্তর্ভুক্ত
  7. দুঃসাহসী অভিযাত্রী 💣 § - একটি FP ওরিয়েন্টেড তাদেরকে JSON Scala জন্য গ্রন্থাগার, Scalaz পিছনে মানুষের কাছ থেকে
  8. play-json ± - এখন একক উপলভ্য, বিশদটির জন্য এই উত্তরটি দেখুন
  9. dijon - একটি সহজ, নিরাপদ এবং দক্ষ JSON লাইব্রেরি, হুডের নীচে jsoniter-scala ব্যবহার করে ।
  10. Sonofjson - একটি অতি-সহজ API এর জন্য জেএসএন লাইব্রেরি
  11. জয়ন - জ্যাকসন-বা-দ্রুত গতির জন্য লক্ষ্য করে এরিক ওশিমের জেএসএন লাইব্রেরি
  12. জড়ান JSON ± - একটি JSON ফ্রন্ট-এন্ড 2, 4, 5, 6, 7, 11 বা জ্যাকসনকে ব্যাক-এন্ড হিসাবে ব্যবহার করতে পারে
  13. circe 💣 - স্কালাজের পরিবর্তে বিড়ালের উপরে নির্মিত আরগনৌটের কাঁটাচামচ
  14. jsoniter-scala - অতি-দ্রুত JSON কোডেকগুলির সংকলন-সময় প্রজন্মের জন্য স্কালা ম্যাক্রোগুলি
  15. জ্যাকসন -মডিউল- স্কেলা - জ্যাকসনের জন্য স্কালা-নির্দিষ্ট ডেটাটাইপগুলি সমর্থন করার জন্য অ্যাড-অন মডিউল
  16. বোরার - স্কালায় দক্ষ সিবিওআর এবং জেএসএন (ডি) সিরিয়ালাইজেশন

💣 = সুরক্ষা দুর্বলতাগুলি স্থির করেনি, § = স্কালাজ ইন্টিগ্রেশন রয়েছে, ± = জ্যাকসনের সাথে ইন্টারপ সমর্থন করে JsonNode

ইন Snowplow আমরা জ্যাকসন ব্যাক এন্ড সঙ্গে json4s ব্যবহার; আমাদের আরগনৌটের সাথেও ভাল অভিজ্ঞতা হয়েছে।


8
এটি সত্য নয় যে লিফট-জসনটি বৃহত্তর লিফট প্রকল্পের মধ্যেই বান্ডিল হয়, আপনি কেবল লিফট-জসনের উপর নির্ভর করতে পারেন এবং লিফট প্রকল্পের আর কিছুই আপনার প্রকল্পে আসবে না।
fmpwizard

3
@ অ্যালেক্সডিয়ান: পার্সিং.জেসন.জেএসন সম্পর্কে এত খারাপ কী?
ম্যাথিয়াস ব্রাউন

দেখে মনে হচ্ছে প্লে- জসনটি
ক্রিশ্চিয়ান

2
@ জর্জন টিপলিং - ভাল কথা, এটির ২.১১-এ অবমূল্যায়নের কোনও উল্লেখ এখন খুঁজে পাচ্ছেন না। মন্তব্যটি সরানো হয়েছে
অ্যালেক্স ডিন

2
এই তালিকায় শীর্ষে জ্যাকসন-মডিউল-স্কেলা রাখা উচিত যা পারফরম্যান্স, সরলতা, রক্ষণাবেক্ষণ এবং সহায়তার জন্য এখনও সেরা।
লাইওমি

17

লিফট-জেসনটি ২.6 সংস্করণে রয়েছে এবং এটি সত্যিই ভালভাবে কাজ করে (এবং এটি খুব ভাল সমর্থিতও হয়, রক্ষণাবেক্ষণকারী ব্যবহারকারীরা যে কোনও বাগ খুঁজে পেতে পারেন তা ঠিক করার জন্য সর্বদা প্রস্তুত থাকে You গিথুব সংগ্রহস্থলে আপনি এটি ব্যবহার করে উদাহরণগুলি খুঁজে পেতে পারেন)

রক্ষণাবেক্ষণকারী (জোনি ফ্রিম্যান) সর্বদা লিফ্ট মেলিং তালিকায় পৌঁছতে পারে । মেলিং তালিকায় থাকা অন্য ব্যবহারকারীরাও আছেন যারা খুব সহায়ক।

@ অ্যালেক্সি যেমন উল্লেখ করেছে, আপনি যদি অন্যান্য স্কালা সংস্করণ সহ গ্রন্থাগারটি ব্যবহার করতে চান, বলুন 2.11.x, পরিবর্তন করুন scalaVersionএবং নীচে %%হিসাবে ব্যবহার করুন :

scalaVersion := "2.11.5" 

"net.liftweb" %% "lift-json" % "2.6"

সময়ের সাথে সাথে সর্বশেষতম সংস্করণটি জানতে আপনি লিফটওব . नेट. সাইটটি চেক করতে পারেন ।


3
আমি লিফট-জসনও ব্যবহার করি এবং এটিও দুর্দান্ত লাইব্রেরি হতে পারে তা নিশ্চিত করে বলতে পারি। এটি JSON কে খুব সহজে পার্সিং এবং উত্পন্ন / সিরিয়ালাইজ করে তোলে।
ড্যান সাইমন

1
"নেট.লিফটভেব"% "লিফট-জসন_2.10"% "2.5.1" এর জন্য +1
ডিলান হগ

2
এবং স্কেলার ২.১১ এর জন্য: "নেট.লিফটওব"% "লিফট-জসন_2.11"% "2.6-এম 4"
আলেক্সি

15

আমি জারকসন ব্যবহার করার পরামর্শ দিচ্ছি , এটি সর্বাধিক প্রাথমিক ধরণের রূপান্তরকে সমর্থন করে:

scala> import com.codahale.jerkson.Json._

scala> val l = List( 
                 Map( "id" -> 1, "name" -> "John" ),
                 Map( "id" -> 2, "name" -> "Dani")
               )

scala> generate( l )

res1: String = [{"id":1,"name":"John"},{"id":2,"name":"Dani"}]

2
এটিতে কেস ক্লাসগুলির জন্য সত্যই দুর্দান্ত কিছু সমর্থন রয়েছে যা কিছু খুব মার্জিত এবং টাইপ-নিরাপদ জেএসওএন হ্যান্ডলিংয়ের জন্য তৈরি করতে পারে ।
থমাস লকনি

9
এই গ্রন্থাগারটি লেখক পরিত্যাগ করেছেন, কোনও বিকল্প আছে কি?
zjffdu

1
আসুন rapture.io সম্পর্কে ভুলে যাবেন না , যা "আই / ও, ক্রিপ্টোগ্রাফি এবং জেএসওএন এবং এক্সএমএল প্রসেসিংয়ের সাথে কাজ করার মতো সাধারণ প্রোগ্রামিং কাজের জন্য সুন্দর আইডেম্যাটিক স্কালা এপিআই সরবরাহকারী স্কাল গ্রন্থাগারগুলির একটি পরিবার"।
পাইওহেন

12

তালিকার Number নম্বরে আছেন জ্যাকসন, জারসন ব্যবহার করছেন না। এটি স্কেল অবজেক্টস, (কেস ক্লাস ইত্যাদি) সমর্থন করে।

নীচে আমি এটি কীভাবে ব্যবহার করি তার একটি উদাহরণ দেওয়া আছে।

object MyJacksonMapper extends JacksonMapper
val jsonString = MyJacksonMapper.serializeJson(myObject)
val myNewObject = MyJacksonMapper.deserializeJson[MyCaseClass](jsonString)

এটি এটি খুব সহজ করে তোলে। এছাড়াও এক্সএমএসআরশায়ালাইজার রয়েছে এবং জ্যাকএক্সবি এনোটেশনগুলির জন্য সমর্থনটি খুব সহজ।

এই ব্লগ পোস্টটি JAXB টিকা এবং প্লে ফ্রেমওয়ার্ক সহ এটি ব্যবহারের বর্ণনা করে describes

http://krasserm.blogspot.co.uk/2012/02/using-jaxb-for-xml-and-json-apis-in.html

এখানে আমার বর্তমান জ্যাকসনম্যাপার।

trait JacksonMapper {

  def jsonSerializer = {
    val m = new ObjectMapper()
    m.registerModule(DefaultScalaModule)
    m
  }

  def xmlSerializer = {
    val m = new XmlMapper()
    m.registerModule(DefaultScalaModule)
    m
  }

  def deserializeJson[T: Manifest](value: String): T = jsonSerializer.readValue(value, typeReference[T])
  def serializeJson(value: Any) = jsonSerializer.writerWithDefaultPrettyPrinter().writeValueAsString(value)
  def deserializeXml[T: Manifest](value: String): T = xmlSerializer.readValue(value, typeReference[T])
  def serializeXml(value: Any) = xmlSerializer.writeValueAsString(value)

  private[this] def typeReference[T: Manifest] = new TypeReference[T] {
    override def getType = typeFromManifest(manifest[T])
  }

  private[this] def typeFromManifest(m: Manifest[_]): Type = {
     if (m.typeArguments.isEmpty) { m.erasure }
     else new ParameterizedType {
       def getRawType = m.erasure

       def getActualTypeArguments = m.typeArguments.map(typeFromManifest).toArray

       def getOwnerType = null
     }
  }
}   

8

হয়তো আমি কিছুটা দেরি করেছি, তবে আপনার খেলার ফ্রেমওয়ার্ক থেকে জেসন লাইব্রেরিটি ব্যবহার করার চেষ্টা করা উচিত। আপনি ডকুমেন্টেশন তাকান পারে । বর্তমান ২.১.১ প্রকাশে আপনি পুরো প্লে 2 ব্যতীত আলাদাভাবে এটি ব্যবহার করতে পারবেন না, সুতরাং নির্ভরতা এটির মতো দেখায়:

val typesaferepo  = "TypeSafe Repo" at "http://repo.typesafe.com/typesafe/releases"
val play2 = "play" %% "play" % "2.1.1"

এটি বোর্ডে সমস্ত স্টাফ সহ পুরো খেলার কাঠামো নিয়ে আসবে।

তবে আমি জানি যে টাইপসেফের ছেলেরা এটি ২.২ রিলিজের মধ্যে আলাদা করার পরিকল্পনা করেছে। সুতরাং, ২.২-স্ন্যাপশট থেকে স্বতন্ত্র প্লে-জসন রয়েছে


2
এফওয়াইআই: প্লে-এর জেএসওএন লাইব্রেরিটি ইতিমধ্যে টাইপসেইফ স্ন্যাপশট রেপোতে উপলব্ধ: repo.typesafe.com/tyypeafe/snapshots/com/typesafe/play/…
Tvaroh

... যা আপনি যেমন যোগ করতে পারেন ।
bluenote10

এটি আনুষ্ঠানিকভাবে এসবিটি টিউটোরিয়ালে
সার্ভ-ইন

5

আপনার জেনসন চেক করা উচিত । এটি কেবলমাত্র কাজ করে এবং স্কালার বিদ্যমান বিকল্পগুলির বেশিরভাগের তুলনায় এটি ব্যবহার করা আরও সহজ। এটি দ্রুত, এর অন্যান্য বৈশিষ্ট্যগুলির সাথে অনেকগুলি বৈশিষ্ট্য এবং সংহত রয়েছে (জোডাটাইম, জসন 4 এস ডম এপি ...)।

ইম্পিলিটস, কাস্টম রিডার / বেসিক কেসগুলির জন্য লেখক, অপারেটর ওভারলোডের কারণে ইলিসেবল এপিআই এর মতো কোনও অভিনব অসম্পূর্ণ কোড ব্যতীত ...

এটি ব্যবহার করা যেমন সহজ:

import com.owlike.genson.defaultGenson_

val json = toJson(Person(Some("foo"), 99))
val person = fromJson[Person]("""{"name": "foo", "age": 99}""")

case class Person(name: Option[String], age: Int)

দাবি অস্বীকার: আমি জেনসন লেখক, তবে তা আমি লক্ষ্য করি না :)


সুন্দর বাঁধটি দুর্দান্ত, লজ্জার এটির একটি সমস্যা রয়েছে github.com/ow Like
genson

5

এখানে রাইটিং এবং তারপরে jsonফাইল পড়ার একটি প্রাথমিক প্রয়োগ রয়েছে json4s

import org.json4s._
import org.json4s.jackson.JsonMethods._
import org.json4s.JsonDSL._
import java.io._
import scala.io.Source


object MyObject { def main(args: Array[String]) {

  val myMap = Map("a" -> List(3,4), "b" -> List(7,8))

  // writing a file 
  val jsonString = pretty(render(myMap))

  val pw = new PrintWriter(new File("my_json.json"))
  pw.write(jsonString)
  pw.close()

  // reading a file 
  val myString = Source.fromFile("my_json.json").mkString
  println(myString)

  val myJSON = parse(myString)

  println(myJSON)

  // Converting from JOjbect to plain object
  implicit val formats = DefaultFormats
  val myOldMap = myJSON.extract[Map[String, List[Int]]]

  println(myOldMap)
 }
}

4

জ্যান স্কালার একটি খুব নমনীয় জেএসএন পার্সার লাইব্রেরি। এটি কাস্টম এএসটি তৈরির অনুমতি দেয়; এএসটিতে মানচিত্রের জন্য আপনাকে কেবল এটি একটি ছোট বৈশিষ্ট্য সরবরাহ করতে হবে।

সাম্প্রতিক প্রকল্পের জন্য দুর্দান্ত কাজ করেছেন যার জন্য JSON পার্সিংয়ের সামান্য বিট প্রয়োজন।


4

উত্তেজনা উত্তরগুলির তালিকায় অনুপস্থিত বলে মনে হচ্ছে। এটি http://rapture.io/ থেকে পাওয়া যায় এবং আপনাকে (অন্যান্য জিনিসগুলির মধ্যে) এতে অনুমতি দেয়:

  • JSON ব্যাক-এন্ড নির্বাচন করুন, এটি ইতিমধ্যে যদি আপনি একটি ব্যবহার করেন (আমদানিতে)
  • আপনি চেষ্টা, ভবিষ্যত, বিকল্প, হয়, ইত্যাদি ইত্যাদির সাথে কাজ করেন কিনা তা স্থির করুন (এছাড়াও আমদানিতেও)
  • কোডের একক লাইনে প্রচুর কাজ করুন।

আমি এটির পৃষ্ঠা থেকে র‌্যাপচারের উদাহরণগুলি অনুলিপি / কপি করতে চাই না। র্যাপচারের বৈশিষ্ট্যগুলি সম্পর্কে একটি দুর্দান্ত উপস্থাপনা জোন প্রেটি এসবিটিবি ২০১৪ এ দিয়েছেন: https://www.youtube.com/watch?v=ka5-OLJgybI


3

@ AlaxDean এর # 7 উত্তর, দুঃসাহসী অভিযাত্রী একমাত্র ব্যক্তি যাকে আমি SBT এবং intellij সঙ্গে দ্রুত কাজ পেতে সক্ষম ছিল। আসলে json4s এও খুব কম সময় লেগেছে তবে কাঁচা এএসটি নিয়ে কাজ করা আমি যা চাইছিলাম তা নয়। আমার বিল্ড.স্টে একক লাইনে রেখে কাজ করার জন্য আমি অর্গনট পেয়েছি:

libraryDependencies += "io.argonaut" %% "argonaut" % "6.0.1"

এবং তারপরে একটি সাধারণ পরীক্ষা এটি আমি JSON পেতে পারি কিনা তা দেখার জন্য:

package mytest


import scalaz._, Scalaz._
import argonaut._, Argonaut._

object Mytest extends App {

  val requestJson  =
    """
    {
      "userid": "1"
    }
    """.stripMargin

  val updatedJson: Option[Json] = for {
    parsed <- requestJson.parseOption
  } yield ("name", jString("testuser")) ->: parsed

  val obj = updatedJson.get.obj
  printf("Updated user: %s\n", updatedJson.toString())
  printf("obj : %s\n", obj.toString())
  printf("userid: %s\n", obj.get.toMap("userid"))
}

এবং তারপর

$ sbt
> run
Updated user: Some({"userid":"1","name":"testuser"})
obj : Some(object[("userid","1"),("name","testuser")])
userid: "1"

আপনি অপশনের সাথে পরিচিত তা নিশ্চিত হয়ে নিন যা কেবলমাত্র একটি মান যা নালও হতে পারে (আমার ধারণা নাল নিরাপদ)। আরগোনাট স্কালাজকে ব্যবহার করে তাই যদি আপনি এমন কিছু দেখতে পান যা আপনি প্রতীক \/(একটি বা অপারেশন) এর মতো বুঝতে না পারেন তবে এটি সম্ভবত স্কালাজ।


2

আপনি এটি চেষ্টা করতে পারেন: https://github.com/momodi/Json4Scala

এটি সহজ, এবং 300 টিরও কম লাইনের কোড সহ একটি মাত্র স্কাল ফাইল রয়েছে।

নমুনা আছে:

test("base") {
    assert(Json.parse("123").asInt == 123)
    assert(Json.parse("-123").asInt == -123)
    assert(Json.parse("111111111111111").asLong == 111111111111111l)
    assert(Json.parse("true").asBoolean == true)
    assert(Json.parse("false").asBoolean == false)
    assert(Json.parse("123.123").asDouble == 123.123)
    assert(Json.parse("\"aaa\"").asString == "aaa")
    assert(Json.parse("\"aaa\"").write() == "\"aaa\"")

    val json = Json.Value(Map("a" -> Array(1,2,3), "b" -> Array(4, 5, 6)))
    assert(json("a")(0).asInt == 1)
    assert(json("b")(1).asInt == 5)
}
test("parse base") {
    val str =
        """
          {"int":-123, "long": 111111111111111, "string":"asdf", "bool_true": true, "foo":"foo", "bool_false": false}
        """
    val json = Json.parse(str)
    assert(json.asMap("int").asInt == -123)
    assert(json.asMap("long").asLong == 111111111111111l)
    assert(json.asMap("string").asString == "asdf")
    assert(json.asMap("bool_true").asBoolean == true)
    assert(json.asMap("bool_false").asBoolean == false)
    println(json.write())
    assert(json.write().length > 0)
}
test("parse obj") {
    val str =
        """
           {"asdf":[1,2,4,{"bbb":"ttt"},432]}
        """
    val json = Json.parse(str)
    assert(json.asMap("asdf").asArray(0).asInt == 1)
    assert(json.asMap("asdf").asArray(3).asMap("bbb").asString == "ttt")
}
test("parse array") {
    val str =
        """
           [1,2,3,4,{"a":[1,2,3]}]
        """
    val json = Json.parse(str)
    assert(json.asArray(0).asInt == 1)
    assert(json(4)("a")(2).asInt == 3)
    assert(json(4)("a")(2).isInt)
    assert(json(4)("a").isArray)
    assert(json(4)("a").isMap == false)
}
test("real") {
    val str = "{\"styles\":[214776380871671808,214783111085424640,214851869216866304,214829406537908224],\"group\":100,\"name\":\"AO4614【金宏达电子】现货库存 质量保证 欢迎购买@\",\"shopgrade\":8,\"price\":0.59,\"shop_id\":60095469,\"C3\":50018869,\"C2\":50024099,\"C1\":50008090,\"imguri\":\"http://img.geilicdn.com/taobao10000177139_425x360.jpg\",\"cag\":50006523,\"soldout\":0,\"C4\":50006523}"
    val json = Json.parse(str)
    println(json.write())
    assert(json.asMap.size > 0)
}

আমি এটি পছন্দ করি - ছোট ব্যবহারের ক্ষেত্রে দুর্দান্ত - কোনও লাইব্রেরির প্রয়োজন নেই।
সামিক আর

2

আমি ইউপিকল ব্যবহার করি যার বড় সুবিধা রয়েছে যে এটি নেস্টেড কেস ক্লাসগুলি স্বয়ংক্রিয়ভাবে পরিচালনা করবে:

object SerializingApp extends App {

  case class Person(name: String, address: Address)

  case class Address(street: String, town: String, zipCode: String)

  import upickle.default._

  val john = Person("John Doe", Address("Elm Street 1", "Springfield", "ABC123"))

  val johnAsJson = write(john)
  // Prints {"name":"John Doe","address":{"street":"Elm Street 1","town":"Springfield","zipCode":"ABC123"}}
  Console.println(johnAsJson)

  // Parse the JSON back into a Scala object
  Console.println(read[Person](johnAsJson))  
}

build.sbtইউপিকল ব্যবহার করতে এটি আপনার এ যুক্ত করুন :

libraryDependencies += "com.lihaoyi" %% "upickle" % "0.4.3"

0

আমি প্লে জেএসওন লাইব্রেরি ব্যবহার করি আপনি এখানে কেবল জেএসওন লাইব্রেরির জন্য মভান রেপো খুঁজে পেতে পারেন পুরো ফ্রেমওয়ার্কটি এখানে নয় framework

    val json = "com.typesafe.play" %% "play-json" % version
    val typesafe = "typesafe.com" at "http://repo.typesafe.com/typesafe/releases/"

সেগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে একটি খুব ভাল টিউটোরিয়াল এখানে পাওয়া যায়:

http://mandubian.com/2012/09/08/unveiling-play-2-dot-1-json-api-part1-jspath-reads-combinators/

http://mandubian.com/2012/10/01/unveiling-play-2-dot-1-json-api-part2-writes-format-combinators/

http://mandubian.com/2012/10/29/unveiling-play-2-dot-1-json-api-part3-json-transformers/


জেএসএন প্লে ইতিমধ্যে উপরে উল্লিখিত ছিল।
bluenote10

0

আমি আপনাকে জেএসওএন সংস্করণ এর এসও দিতে দাও :

import nl.typeset.sonofjson._

arr(
  obj(id = 1, name = "John)
  obj(id = 2, name = "Dani)
)

আমি এটি ব্যবহার করতে চাই তবে এটি কীভাবে এটি আমার নির্ভরতাগুলিতে যুক্ত করা যায় তা অনুগ্রহ করতে পারি না কারণ এটি মাভেনে নেই।
জেসন উলোসনোভিচ

0

প্লে ফ্রেমওয়ার্ক, প্লে ডাব্লুএস থেকে স্বতন্ত্রভাবে জেএসএনের সাথে ডিল করার জন্য প্লে তার মডিউলটি প্রকাশ করেছে

সে সম্পর্কে একটি ব্লগ পোস্ট তৈরি করেছেন, এটি http://pedrorijo.com/blog/scala-json/ এ দেখুন

কেস ক্লাস এবং প্লে ডাব্লুএস ব্যবহার করে (ইতিমধ্যে প্লে ফ্রেমওয়ার্ক অন্তর্ভুক্ত) আপনি সাধারণ ওয়ান-লাইনার অন্তর্নিহিত জেসন এবং কেস ক্লাসগুলির মধ্যে রূপান্তর করেন case

case class User(username: String, friends: Int, enemies: Int, isAlive: Boolean)

object User {
  implicit val userJsonFormat = Json.format[User]
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.