json - Gson:Unable to invoke no-args constructor for interface scala.collection.mutable.Seq -


i have list of objects want store in mongodb after doing research found need serialize our class object in json , deserialize original object form

i have list var messagelist : mutablelist[message] list of message's want store list in mongodb after serializing objects in list stored list(consist of json strings)

val result:writeresult=  collection.insert(new basicdbobject("_id",inbox.uuid)                         .append("messagelist",messageobjstr)                         ,writeconcern.acknowledged) 

in mongodb here documents in mongodb

{ "_id" : 333, "messagelist" : [ "{\"uuid\":123,\"subject\":\"subject\",\"body\":\"bodytext\",\"artworkuuid\":100,\"datetime\":{\"date\":{\"year\":2015,\"month\":7,\"day\":7},\"time\":{\"hour\":16,\"minute\":46,\"second\":17,\"nano\":487000000}},\"readstatusstr\":\"read\",\"deletestatusstr\":\"deleted\",\"idlist\":{\"first0\":{\"elem\":123,\"next\":{}},\"last0\":{\"elem\":123,\"next\":{}},\"len\":1}}", "{\"uuid\":321,\"subject\":\"subject1\",\"body\":\"bodytext1\",\"artworkuuid\":101,\"datetime\":{\"date\":{\"year\":2015,\"month\":7,\"day\":7},\"time\":{\"hour\":16,\"minute\":46,\"second\":17,\"nano\":562000000}},\"readstatusstr\":\"read\",\"deletestatusstr\":\"deleted\",\"idlist\":{\"first0\":{\"elem\":321,\"next\":{}},\"last0\":{\"elem\":321,\"next\":{}},\"len\":1}}" ] } 

now want fetch document doing

 val cursor=collection.find()         var obj=new basicdbobject      try {          while(cursor.hasnext)          {            obj=cursor.next().asinstanceof[basicdbobject]             id=obj.getstring("_id").toint            var list:basicdblist=obj.get("messagelist").asinstanceof[basicdblist]                for(value<-list)              {                var gsonmsg=value.tostring()                println("what stored in mongo db "+gsonmsg)                var msgobj=gson.fromjson(gsonmsg, classof[message])                messagelist+=msgobj                }       for(n<-messagelist)                 {                  println("values of messagelist "+n                      +" uuid "+n.getuuid +" body "+n.getbody + " subject " +n.getsubject                       +" datetime "+n.getdatetime+ " artworkuuid "+n.getartworkuuid)                  }                  }        }        finally{          cursor.close()          client.close()         } 

the code works till line

println("what stored in mongo db "+gsonmsg)  

and on line

var msgobj=gson.fromjson(gsonmsg, classof[message]) 

following exception thrown

java.lang.runtimeexception: unable invoke no-args constructor interface scala.collection.mutable.seq. register instancecreator gson type may fix problem. package models.usernotifications.mailmessages  import org.joda.time.datetime import models.usernotifications.mailmessages.readstatus._ import models.usernotifications.mailmessages.deletestatus._ import models.usernotifications.mailmessages.deletereason._ import scala.collection.mutable.mutablelist import java.time.localdatetime;  @serialversionuid(1) class message(val uuid: int ,val subject : string, val body : string, var artworkuuid : int,     val datetime : localdatetime = localdatetime.now()) extends ordered[message] serializable{    /* def this(){     this(0,"", "",0, localdatetime.now())   }  */    def this(){     this(0,"", "",0)    }   def this(uuid: int,    subject : string,    body : string,    artworkuuid : int,    datetime : localdatetime,    readstatus : readstatus,    delete : deletestatus    ){ this( uuid , subject , body , artworkuuid,datetime) this.readstatus = readstatus this.deletestatus= delete }     /*    * returns sorted datetime    */   def compare(other: message): int = other.datetime.compareto(this.datetime)     @transient var readstatus : readstatus = read    @transient var deletestatus : deletestatus = deleted      var readstatusstr = readstatus.tostring()     var deletestatusstr= deletestatus.tostring()       var idlist = new mutablelist[int]()     adduuidtolist(uuid)   /*  * setters  */       def setbody(setartworkuuid : int)={       artworkuuid = setartworkuuid     }      def setreadstatus(readstatus : string)={       readstatus = readstatus.withname(readstatus)     }      def setdelete(setdelete : string) = {       deletestatus = deletestatus.withname(setdelete)     }   def adduuidtolist(uuid : int)  = {     idlist += uuid      }    /*  * getters  */      def getuuid : int ={       uuid     }     def getsubject : string = {       subject     }      def getbody : string ={       body     }      def getartworkuuid : int = {       artworkuuid     }     def getdatetime : localdatetime = {        datetime       }      def getreadstatus : readstatus = {       readstatus     }      def getdeletestatus  : deletestatus = {       deletestatus     }      def getreadstatusstr : string = {       readstatusstr     }      def getdeletestatusstr  : string = {       deletestatusstr     }      def getuuidslist:mutablelist[int]  = {     idlist   }   } 

here output printed on console stored in mongodb

{"uuid":123,"subject":"subject","body":"bodytext","artworkuuid":100,"datetime":{"date":{"year":2015,"month":7,"day":7},"time":{"hour":16,"minute":51,"second":52,"nano":359000000}},"readstatusstr":"read","deletestatusstr":"deleted","idlist":{"first0":{"elem":123,"next":{}},"last0":{"elem":123,"next":{}},"len":1}} 2015-07-07 16:51:54.812 error oneforonestrategy [testactorsystem-akka.actor.default-dispatcher-3] akka://testactorsystem/user/inboxwriteinmongoactor/artistuserreadmongoactor/inboxqueryactor -unable invoke no-args constructor interface scala.collection.mutable.seq. register instancecreator gson type may fix problem. java.lang.runtimeexception: unable invoke no-args constructor interface scala.collection.mutable.seq. register instancecreator gson type may fix problem.     @ com.google.gson.internal.constructorconstructor$12.construct(constructorconstructor.java:210) ~[gson-2.3.1.jar:na]     @ com.google.gson.internal.bind.reflectivetypeadapterfactory$adapter.read(reflectivetypeadapterfactory.java:186) ~[gson-2.3.1.jar:na]     @ com.google.gson.internal.bind.reflectivetypeadapterfactory$1.read(reflectivetypeadapterfactory.java:103) ~[gson-2.3.1.jar:na]     @ com.google.gson.internal.bind.reflectivetypeadapterfactory$adapter.read(reflectivetypeadapterfactory.java:196) ~[gson-2.3.1.jar:na]     @ com.google.gson.internal.bind.reflectivetypeadapterfactory$1.read(reflectivetypeadapterfactory.java:103) ~[gson-2.3.1.jar:na]     @ com.google.gson.internal.bind.reflectivetypeadapterfactory$adapter.read(reflectivetypeadapterfactory.java:196) ~[gson-2.3.1.jar:na]     @ com.google.gson.internal.bind.reflectivetypeadapterfactory$1.read(reflectivetypeadapterfactory.java:103) ~[gson-2.3.1.jar:na]     @ com.google.gson.internal.bind.reflectivetypeadapterfactory$adapter.read(reflectivetypeadapterfactory.java:196) ~[gson-2.3.1.jar:na]     @ com.google.gson.gson.fromjson(gson.java:810) ~[gson-2.3.1.jar:na]     @ com.google.gson.gson.fromjson(gson.java:775) ~[gson-2.3.1.jar:na]     @ com.google.gson.gson.fromjson(gson.java:724) ~[gson-2.3.1.jar:na]     @ com.google.gson.gson.fromjson(gson.java:696) ~[gson-2.3.1.jar:na]     @ models.usernotifications.mailmessages.mailmessagesmongoreadwrite.inboxqueryactor$$anonfun$readall$1.apply(inboxqueryactor.scala:77) ~[classes/:na]     @ models.usernotifications.mailmessages.mailmessagesmongoreadwrite.inboxqueryactor$$anonfun$readall$1.apply(inboxqueryactor.scala:73) ~[classes/:na]     @ scala.collection.iterator$class.foreach(iterator.scala:743) ~[scala-library-2.11.1.jar:0.13.5]     @ scala.collection.abstractiterator.foreach(iterator.scala:1174) ~[scala-library-2.11.1.jar:0.13.5]     @ scala.collection.iterablelike$class.foreach(iterablelike.scala:72) ~[scala-library-2.11.1.jar:0.13.5]     @ com.mongodb.casbah.commons.mongodblist.foreach(mongodblist.scala:33) ~[casbah-commons_2.11-2.8.0.jar:2.8.0] 

all want there list(msgobj1,msgob2) after converted json string list(jsonstringofmsgobj1,jsonstringofmsgobj2) stored in mongo db [jsonstringofmsgobj1,jsonstringofmsgobj2] when try fetch using basicdblist jsonstringofmsgobj1 first iteration -> want deserialize jsonstringofmsgobj1 msgobj1 same next iteration please me .thanks


Comments

Popular posts from this blog

How to provide Authorization & Authentication using Asp.net, C#? -

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

How to use Authorization & Authentication in Asp.net, C#? -