问题: scala中对象转json字符串报错
提示:scala中get和set方法实现与java中的不一样。
- Error:(26, 10) ambiguous reference to overloaded definition,
- both method toJSONString in class JSON of type (x$1: Any, x$2: com.alibaba.fastjson.serializer.SerializerFeature*)String
- and method toJSONString in class JSON of type (x$1: Any)String
- match argument types (com.yupaopao.platform.common.dto.Response[com.yupaopao.platform.common.dto.PageResult[com.yupaopao.platform.rank.api.response.TopsRankDTO]]) and expected result type String
- JSON.toJSONString(accompany_rank)
一、使用fastjson或者json4s
- <dependency>
- <groupId>com.alibabagroupId>
- <artifactId>fastjsonartifactId>
- <version>2.0.23version>
- dependency>
-
- <dependency>
- <groupId>org.json4sgroupId>
- <artifactId>json4s-jackson_${scala.version}artifactId>
- <version>3.2.11version>
- dependency>
1、使用fastjson
- import com.alibaba.fastjson.JSON
- import com.alibaba.fastjson.serializer.{SerializeConfig, SerializerFeature}
-
- case class Person(id: Integer, name: String, item: String)
- object test {
- def main(args: Array[String]): Unit = {
-
- val od = Order(1,"01",null)
- val jsonString = JSON.toJSONString(od, new SerializeConfig(true),SerializerFeature.WriteMapNullValue)
- println(jsonString) #结果:{"id":1,"name":"01","item":null}
-
-
- val obj = JSON.parseObject(jsonString, classOf[Person])
- println(obj) #结果:Person(1,01,null)
-
- }
- }
补充:scala case class + BeanProperty+fastjson
2、使用json4s
- import org.json4s._
- import org.json4s.jackson.{JsonMethods, Serialization}
-
- case class Person(id: Int, name: String, item: String)
- object test {
- def main(args: Array[String]): Unit = {
-
- #隐式转换
- implicit val formats = Serialization.formats(NoTypeHints)
-
- #对象转jsonString
- val od = Person(1,"01",null)
- val jsonString = Serialization.write(od)
- println(jsonString) #结果:{"id":1,"name":"01","item":null}
-
- #jsonString转对象
- val person = JsonMethods.parse(jsonString).extract[Person]
- println(person) #结果:Person(1,01,null)
-
- }
- }