Scala generics usage for methods + json4s parsingjson4s serialization of string to avro specific record classCreate Generic method constraining T to an EnumHow do I use reflection to call a generic method?How to create a generic array in Java?NotSerializableException with json4s on SparkExtracting polymorphic types in json4sParsing and manipulating json in Scalaconvert scala object to json using json4sJSON to case class with generics decoding with json4sHow do I parse a generic class parameter from JSON in Scala?Extracting nested serialized json with json4s into case classes in Scala

Convert a string like 4h53m12s to a total number of seconds in JavaScript

Why is a dedicated QA team member necessary?

This message is flooding my syslog, how to find where it comes from?

Very basic singly linked list

How can I stop myself from micromanaging other PCs' actions?

Is the "cosmological constant tension" the prime reason that we believe the expansion of the universe is accelerating?

What does "see" in "the Holy See" mean?

Where is this photo of a group of hikers taken? Is it really in the Ural?

Is it normal practice to screen share with a client?

Iterate over non-const variables in C++

Explanation for a joke about a three-legged dog that walks into a bar

What does Kasparov mean by "I was behind in three and even in one after six games"?

What is the lowest speed of a bogey a jet fighter can intercept/escort?

Inadvertently nuked my disk permission structure - why?

How do I stop my characters falling in love?

How can I make sure my players' decisions have consequences?

Why is autologous blood transfusion banned as a kind of doping?

Why no ";" after "do" in sh loops?

How to judge a Ph.D. applicant that arrives "out of thin air"

Why are there not any MRI machines available in Interstellar?

A planet illuminated by a black hole?

Using "Kollege" as "university friend"?

Memory capability and powers of 2

Why did Saturn V not head straight to the moon?



Scala generics usage for methods + json4s parsing


json4s serialization of string to avro specific record classCreate Generic method constraining T to an EnumHow do I use reflection to call a generic method?How to create a generic array in Java?NotSerializableException with json4s on SparkExtracting polymorphic types in json4sParsing and manipulating json in Scalaconvert scala object to json using json4sJSON to case class with generics decoding with json4sHow do I parse a generic class parameter from JSON in Scala?Extracting nested serialized json with json4s into case classes in Scala






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








0















I am not sure if this is achievable and I have a very basic understanding of how generics work in scala. But I was wondering if this is possible.
Say I have a method:



case class Person(id:String,name:String)
case class Student(id:String,name:String, class:String)

def convertToJson[A](fileName:String):
//read file
parse[A]



Is it possible to write this generic method which would parse the json based on the type of class I send when I call the convertToJson method?
Something like:



convertToJson[Student](fileName)
convertToJson[Person](fileName)


BTW the above code gives me a :




No Manifest available for A. error.




Using json4s for parsing.
Any help is appreciated.










share|improve this question




























    0















    I am not sure if this is achievable and I have a very basic understanding of how generics work in scala. But I was wondering if this is possible.
    Say I have a method:



    case class Person(id:String,name:String)
    case class Student(id:String,name:String, class:String)

    def convertToJson[A](fileName:String):
    //read file
    parse[A]



    Is it possible to write this generic method which would parse the json based on the type of class I send when I call the convertToJson method?
    Something like:



    convertToJson[Student](fileName)
    convertToJson[Person](fileName)


    BTW the above code gives me a :




    No Manifest available for A. error.




    Using json4s for parsing.
    Any help is appreciated.










    share|improve this question
























      0












      0








      0








      I am not sure if this is achievable and I have a very basic understanding of how generics work in scala. But I was wondering if this is possible.
      Say I have a method:



      case class Person(id:String,name:String)
      case class Student(id:String,name:String, class:String)

      def convertToJson[A](fileName:String):
      //read file
      parse[A]



      Is it possible to write this generic method which would parse the json based on the type of class I send when I call the convertToJson method?
      Something like:



      convertToJson[Student](fileName)
      convertToJson[Person](fileName)


      BTW the above code gives me a :




      No Manifest available for A. error.




      Using json4s for parsing.
      Any help is appreciated.










      share|improve this question














      I am not sure if this is achievable and I have a very basic understanding of how generics work in scala. But I was wondering if this is possible.
      Say I have a method:



      case class Person(id:String,name:String)
      case class Student(id:String,name:String, class:String)

      def convertToJson[A](fileName:String):
      //read file
      parse[A]



      Is it possible to write this generic method which would parse the json based on the type of class I send when I call the convertToJson method?
      Something like:



      convertToJson[Student](fileName)
      convertToJson[Person](fileName)


      BTW the above code gives me a :




      No Manifest available for A. error.




      Using json4s for parsing.
      Any help is appreciated.







      scala generics json4s






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 26 at 16:33









      AchilleusAchilleus

      8695 silver badges20 bronze badges




      8695 silver badges20 bronze badges






















          1 Answer
          1






          active

          oldest

          votes


















          3














          This will convert a JSON string to a case class



          import org.json4s._
          import org.json4s.jackson.JsonMethods._

          def convertToJson[T](json: String)(implicit fmt: Formats = DefaultFormats, mf: Manifest[T]): T =
          Extraction.extract(parse(json))


          Once this is defined you can parse appropriate strings to the required type:



          case class Person(id: String, name: String)
          case class Student(id: String, name: String, `class`: String)

          val person = convertToJson[Person](""""name":"Jane","id":45""")
          val student = convertToJson[Student](""""name":"John","id":63, "class": "101"""")


          Note that this will ignore JSON data that does not match fields in the case class. If a field is optional in the JSON, make it an Option in the case class and you will get None if the field is not there.






          share|improve this answer























          • That worked! Thanks. On a side note is there a way to deal with nulling out case when we have bad data? Say throw an exception or something?

            – Achilleus
            Mar 26 at 19:52











          • @Achilleus If you have bad data the extract will throw an exception. You can let the caller handle that, or wrap the extract call in a Try and return a Try[T], which is perhaps more standard in Scala.

            – Tim
            Mar 26 at 23:27











          • Actually, it won't throw an exception in the situation when we are dealing with nested json and an object in it say has a field spelled wrong. It will just null that object and move on. I was wondering if we can somehow specify it to fail or throw an exception instead of nulling it out.

            – Achilleus
            Mar 26 at 23:37











          • Can you give an example of this? If I rename one of the fields from the JSON string I get MappingException: No usable value for <fieldname>.

            – Tim
            Mar 26 at 23:50











          • Ah actually, it throws the exception for case classes. But I am using an Avro specific record case class. Its a case class that extends org.apache.avro.specific.SpecificRecordBase. But somehow it serializes to null in this case.

            – Achilleus
            Mar 27 at 16:05










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55362062%2fscala-generics-usage-for-methods-json4s-parsing%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          3














          This will convert a JSON string to a case class



          import org.json4s._
          import org.json4s.jackson.JsonMethods._

          def convertToJson[T](json: String)(implicit fmt: Formats = DefaultFormats, mf: Manifest[T]): T =
          Extraction.extract(parse(json))


          Once this is defined you can parse appropriate strings to the required type:



          case class Person(id: String, name: String)
          case class Student(id: String, name: String, `class`: String)

          val person = convertToJson[Person](""""name":"Jane","id":45""")
          val student = convertToJson[Student](""""name":"John","id":63, "class": "101"""")


          Note that this will ignore JSON data that does not match fields in the case class. If a field is optional in the JSON, make it an Option in the case class and you will get None if the field is not there.






          share|improve this answer























          • That worked! Thanks. On a side note is there a way to deal with nulling out case when we have bad data? Say throw an exception or something?

            – Achilleus
            Mar 26 at 19:52











          • @Achilleus If you have bad data the extract will throw an exception. You can let the caller handle that, or wrap the extract call in a Try and return a Try[T], which is perhaps more standard in Scala.

            – Tim
            Mar 26 at 23:27











          • Actually, it won't throw an exception in the situation when we are dealing with nested json and an object in it say has a field spelled wrong. It will just null that object and move on. I was wondering if we can somehow specify it to fail or throw an exception instead of nulling it out.

            – Achilleus
            Mar 26 at 23:37











          • Can you give an example of this? If I rename one of the fields from the JSON string I get MappingException: No usable value for <fieldname>.

            – Tim
            Mar 26 at 23:50











          • Ah actually, it throws the exception for case classes. But I am using an Avro specific record case class. Its a case class that extends org.apache.avro.specific.SpecificRecordBase. But somehow it serializes to null in this case.

            – Achilleus
            Mar 27 at 16:05















          3














          This will convert a JSON string to a case class



          import org.json4s._
          import org.json4s.jackson.JsonMethods._

          def convertToJson[T](json: String)(implicit fmt: Formats = DefaultFormats, mf: Manifest[T]): T =
          Extraction.extract(parse(json))


          Once this is defined you can parse appropriate strings to the required type:



          case class Person(id: String, name: String)
          case class Student(id: String, name: String, `class`: String)

          val person = convertToJson[Person](""""name":"Jane","id":45""")
          val student = convertToJson[Student](""""name":"John","id":63, "class": "101"""")


          Note that this will ignore JSON data that does not match fields in the case class. If a field is optional in the JSON, make it an Option in the case class and you will get None if the field is not there.






          share|improve this answer























          • That worked! Thanks. On a side note is there a way to deal with nulling out case when we have bad data? Say throw an exception or something?

            – Achilleus
            Mar 26 at 19:52











          • @Achilleus If you have bad data the extract will throw an exception. You can let the caller handle that, or wrap the extract call in a Try and return a Try[T], which is perhaps more standard in Scala.

            – Tim
            Mar 26 at 23:27











          • Actually, it won't throw an exception in the situation when we are dealing with nested json and an object in it say has a field spelled wrong. It will just null that object and move on. I was wondering if we can somehow specify it to fail or throw an exception instead of nulling it out.

            – Achilleus
            Mar 26 at 23:37











          • Can you give an example of this? If I rename one of the fields from the JSON string I get MappingException: No usable value for <fieldname>.

            – Tim
            Mar 26 at 23:50











          • Ah actually, it throws the exception for case classes. But I am using an Avro specific record case class. Its a case class that extends org.apache.avro.specific.SpecificRecordBase. But somehow it serializes to null in this case.

            – Achilleus
            Mar 27 at 16:05













          3












          3








          3







          This will convert a JSON string to a case class



          import org.json4s._
          import org.json4s.jackson.JsonMethods._

          def convertToJson[T](json: String)(implicit fmt: Formats = DefaultFormats, mf: Manifest[T]): T =
          Extraction.extract(parse(json))


          Once this is defined you can parse appropriate strings to the required type:



          case class Person(id: String, name: String)
          case class Student(id: String, name: String, `class`: String)

          val person = convertToJson[Person](""""name":"Jane","id":45""")
          val student = convertToJson[Student](""""name":"John","id":63, "class": "101"""")


          Note that this will ignore JSON data that does not match fields in the case class. If a field is optional in the JSON, make it an Option in the case class and you will get None if the field is not there.






          share|improve this answer













          This will convert a JSON string to a case class



          import org.json4s._
          import org.json4s.jackson.JsonMethods._

          def convertToJson[T](json: String)(implicit fmt: Formats = DefaultFormats, mf: Manifest[T]): T =
          Extraction.extract(parse(json))


          Once this is defined you can parse appropriate strings to the required type:



          case class Person(id: String, name: String)
          case class Student(id: String, name: String, `class`: String)

          val person = convertToJson[Person](""""name":"Jane","id":45""")
          val student = convertToJson[Student](""""name":"John","id":63, "class": "101"""")


          Note that this will ignore JSON data that does not match fields in the case class. If a field is optional in the JSON, make it an Option in the case class and you will get None if the field is not there.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 26 at 18:53









          TimTim

          9,2051 gold badge8 silver badges20 bronze badges




          9,2051 gold badge8 silver badges20 bronze badges












          • That worked! Thanks. On a side note is there a way to deal with nulling out case when we have bad data? Say throw an exception or something?

            – Achilleus
            Mar 26 at 19:52











          • @Achilleus If you have bad data the extract will throw an exception. You can let the caller handle that, or wrap the extract call in a Try and return a Try[T], which is perhaps more standard in Scala.

            – Tim
            Mar 26 at 23:27











          • Actually, it won't throw an exception in the situation when we are dealing with nested json and an object in it say has a field spelled wrong. It will just null that object and move on. I was wondering if we can somehow specify it to fail or throw an exception instead of nulling it out.

            – Achilleus
            Mar 26 at 23:37











          • Can you give an example of this? If I rename one of the fields from the JSON string I get MappingException: No usable value for <fieldname>.

            – Tim
            Mar 26 at 23:50











          • Ah actually, it throws the exception for case classes. But I am using an Avro specific record case class. Its a case class that extends org.apache.avro.specific.SpecificRecordBase. But somehow it serializes to null in this case.

            – Achilleus
            Mar 27 at 16:05

















          • That worked! Thanks. On a side note is there a way to deal with nulling out case when we have bad data? Say throw an exception or something?

            – Achilleus
            Mar 26 at 19:52











          • @Achilleus If you have bad data the extract will throw an exception. You can let the caller handle that, or wrap the extract call in a Try and return a Try[T], which is perhaps more standard in Scala.

            – Tim
            Mar 26 at 23:27











          • Actually, it won't throw an exception in the situation when we are dealing with nested json and an object in it say has a field spelled wrong. It will just null that object and move on. I was wondering if we can somehow specify it to fail or throw an exception instead of nulling it out.

            – Achilleus
            Mar 26 at 23:37











          • Can you give an example of this? If I rename one of the fields from the JSON string I get MappingException: No usable value for <fieldname>.

            – Tim
            Mar 26 at 23:50











          • Ah actually, it throws the exception for case classes. But I am using an Avro specific record case class. Its a case class that extends org.apache.avro.specific.SpecificRecordBase. But somehow it serializes to null in this case.

            – Achilleus
            Mar 27 at 16:05
















          That worked! Thanks. On a side note is there a way to deal with nulling out case when we have bad data? Say throw an exception or something?

          – Achilleus
          Mar 26 at 19:52





          That worked! Thanks. On a side note is there a way to deal with nulling out case when we have bad data? Say throw an exception or something?

          – Achilleus
          Mar 26 at 19:52













          @Achilleus If you have bad data the extract will throw an exception. You can let the caller handle that, or wrap the extract call in a Try and return a Try[T], which is perhaps more standard in Scala.

          – Tim
          Mar 26 at 23:27





          @Achilleus If you have bad data the extract will throw an exception. You can let the caller handle that, or wrap the extract call in a Try and return a Try[T], which is perhaps more standard in Scala.

          – Tim
          Mar 26 at 23:27













          Actually, it won't throw an exception in the situation when we are dealing with nested json and an object in it say has a field spelled wrong. It will just null that object and move on. I was wondering if we can somehow specify it to fail or throw an exception instead of nulling it out.

          – Achilleus
          Mar 26 at 23:37





          Actually, it won't throw an exception in the situation when we are dealing with nested json and an object in it say has a field spelled wrong. It will just null that object and move on. I was wondering if we can somehow specify it to fail or throw an exception instead of nulling it out.

          – Achilleus
          Mar 26 at 23:37













          Can you give an example of this? If I rename one of the fields from the JSON string I get MappingException: No usable value for <fieldname>.

          – Tim
          Mar 26 at 23:50





          Can you give an example of this? If I rename one of the fields from the JSON string I get MappingException: No usable value for <fieldname>.

          – Tim
          Mar 26 at 23:50













          Ah actually, it throws the exception for case classes. But I am using an Avro specific record case class. Its a case class that extends org.apache.avro.specific.SpecificRecordBase. But somehow it serializes to null in this case.

          – Achilleus
          Mar 27 at 16:05





          Ah actually, it throws the exception for case classes. But I am using an Avro specific record case class. Its a case class that extends org.apache.avro.specific.SpecificRecordBase. But somehow it serializes to null in this case.

          – Achilleus
          Mar 27 at 16:05








          Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.







          Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55362062%2fscala-generics-usage-for-methods-json4s-parsing%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

          용인 삼성생명 블루밍스 목차 통계 역대 감독 선수단 응원단 경기장 같이 보기 외부 링크 둘러보기 메뉴samsungblueminx.comeh선수 명단용인 삼성생명 블루밍스용인 삼성생명 블루밍스ehsamsungblueminx.comeheheheh

          155 수학 과학 기타 둘러보기 메뉴eh추가해eh문서를 완성해