scala 自带json_scala中json操作

解析json

个人认为,解析json用的最多的就是fastjson了

使用前需要在pom文件中引用:

com.alibaba

fastjson

1.2.47

compile

代码案例:

val jsonStr =

"""

|[

| {

| "type_name" : "aa",

| "score" : 0.9995,

| "classcode" : "a1:0.2136;a2:0.2136;a3:0.2136;a4:0.1582;a5:0.1578;a6:0.0429;a7:0.0004"

| },

| {

| "type_name" : "bb",

| "score" : 0.0005,

| "classcode" : "b1:0.5000;b2:0.5000"

| }

| ]

|""".stripMargin

val typeTageArr = mutable.ArrayBuffer[Map[String,String]]()

if (!"".equals(jsonStr) && !"[]".equals(jsonStr)) {

val jsonArr = JSON.parseArray(jsonStr)

val houses = (0 until jsonArr.size()).map(jsonArr.getJSONObject).toArray

for(jsMap

val typeName = jsMap.get("type_name").toString

val classCode = jsMap.get("classcode").toString.split(";").map(x => x.split(":")(0)).mkString(",")

typeTageArr += Map("type" -> typeName,"classTags" -> classCode)

}

}

array转json

一开始使用JSON.toJSONString(typeTageArr)这种方式,但是报如下错

error: ambiguous reference to overloaded definition,

both method toJSONString in object JSON of type (x$1: Any, x$2: com.alibaba.fastjson.serializer.SerializerFeature*)String

and method toJSONString in object JSON of type (x$1: Any)String

从报错的信息当中我们得知是scala对对重载定义的模糊引用造成,从fastjson的源码中可以看到,有两个toJSONString的方法:

public static String toJSONString(Object object) {

return toJSONString(object, emptyFilters);

}

public static String toJSONString(Object object, SerializerFeature... features) {

return toJSONString(object, DEFAULT_GENERATE_FEATURE, features);

}

在第二个方法中SerializerFeature... features 是一个可变长参数,带有变长参数的方法重载使得scala在调用方法时感到“模糊”,就无法匹配参数的类型

所以在array或者map转json对象的时候,使用json4s比较好

使用案例:

import org.json4s.JsonDSL._

import org.json4s.jackson.JsonMethods._

compact(render(typeTageArr))

使用起来很方便

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值