当前位置: 首页 > 工具软件 > Scala JSON > 使用案例 >

Scala处理json格式数据

范承教
2023-12-01

单个数据

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)//样例类
 类似资料: