Scala处理json格式数据

单个数据

var li = List(
      "{\"name\":\"张三\",\"age\":30,\"addr\":\"北京\"}",
      "{\"name\":\"李四\",\"age\":30,\"addr\":\"北京\"}",
      "{\"name\":\"王五\", age:30,\"addr\":\"北京\"}",
      "{\"name\":\"赵六\",\"age\":30,\"addr\":\"北京\"",
      "{\"name\":\"田七\",\"age\":30,\"addr\":\"北京\"}",
      "{\"name\":\"乔巴\",\"age\":,\"addr\":\"北京\"}"
    )

使用Scala自带工具处理数据

for(s <- li){

  var obj = JSON.parseFull(s)

  // 将错误数据过滤掉
  if(obj != None){
    var o = obj.get
    //获取值,转换成Map类型

    var m = o.asInstanceOf[Map[String,String]]

    println(m)
    println(m.get("name"))
  }
}

 使用fastjson进行处理数据

for(s <- li){

   var obj:Student = null

   try {
     obj = JSON.parseObject(s, classOf[Student])

   }catch {
     case e:Exception =>
   }

   if(obj != null){
     println(obj)

   }

 }

 

处理数组或者集合数据

// 错误数据
    var li2 = List(
      "[{\"name\":\"张三\",\"age\":30,\"addr\":\"北京\"},",
      "{\"name\":\"李四\",\"age\":30,\"addr\":\"北京\"},",
      "{\"name\":\"王五\", age:30,\"addr\":\"北京\"},",
      "{\"name\":\"赵六\",\"age\":30,\"addr\":\"北京\",",
      "{\"name\":\"田七\",\"age\":30,\"addr\":\"北京\"},",
      "{\"name\":\"乔巴\",\"age\":,\"addr\":\"北京\"}]"
    )


    // 正常数据
    var li3 = List(
      "[{\"name\":\"张三\",\"age\":30,\"addr\":\"北京\"},",
      "{\"name\":\"李四\",\"age\":30,\"addr\":\"北京\"},",
      "{\"name\":\"王五\", \"age\":30,\"addr\":\"北京\"},",
      "{\"name\":\"赵六\",\"age\":30,\"addr\":\"北京\"},",
      "{\"name\":\"田七\",\"age\":30,\"addr\":\"北京\"},",
      "{\"name\":\"乔巴\",\"age\":8,\"addr\":\"北京\"}]"
    )

使用Scala自带工具处理数据

// ============================正常数据============================
   var str = li3.mkString

   //解析json字符串
   var obj = JSON.parseFull(str)

   // 转换成对象
   var list = obj.get.asInstanceOf[List[Map[String,String]]]

  for (i<-list){
    println(i)
  }

//====================错误的数据==========================
// ==============如果数据是一行一个对象的
/*// 循环遍历集合
for(s <- li2){

  //替换掉[,去掉最后一个符号
  var ss = s.replace("["," ").substring(0,s.length-1)

  var obj = JSON.parseFull(ss)

  if(obj!=None){
    var m =obj.get.asInstanceOf[Map[String,String]]

    println(m)
  }

}*/


//   ==============如果所有的数据都在一行中
//var str = li2.mkString

//替换对象和对象中间的逗号
//var str2 = str.replaceAll("},\\{", "}==={").replaceAll("},", "}===").replaceAll(",\\{", "==={")

// 去掉收尾的中括号
//var str3 = str2.replaceAll("\\[","").replace("]","")

//切分数据
//var arr = str3.split("===")

/*for(ss <- arr){
  var obj = JSON.parseFull(ss)

  if(obj!=None){
    var m =obj.get.asInstanceOf[Map[String,String]]

    println(m)
  }

}*/

  使用fastjson进行处理数据

// ============================正常数据============================
/* var str = li3.mkString

 var list = JSON.parseArray(str,classOf[Student])

 println(list)*/


//====================错误的数据==========================

// ==============如果数据是一行一个对象的
//   ==============如果所有的数据都在一行中
var str = li2.mkString

// 替换数据
var str2 = str.replaceAll("},\\{","}==={").replaceAll("},","}===").replaceAll(",\\{","==={")

//将中括号替换
var str3 = str2.replaceAll("]","").replaceAll("\\[","")

//切分数据
var sss = str3.split("===")

for(s <- sss){
  var obj:Student = null

  try {
    obj = JSON.parseObject(s, classOf[Student])

  }catch {
    case e:Exception =>
  }

  if(obj != null){
    println(obj)

  }
}
case class Student(name:String,addr:String,age:Int)//样例类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值