单个数据
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)//样例类版权声明:本文为weixin_46290444原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。