List[User]与jsonArray字符串的相互转换
object testo725 {
def main(args: Array[String]): Unit = {
val lili: User = User("lili", 15)
val tom: User = User("tom", 15)
var userList: ListBuffer[User] = ListBuffer()
userList += lili
userList += tom
val javaList: util.List[User] = userList.asJava
//将list[User]转换为jsonArray字符串
val conf = new SerializeConfig(true)
val userArrStr: String = JSON.toJSONString(javaList, conf)
println(userArrStr)
//将jsonArray字符串转换为List[User]
val users: util.List[User] = JSON.parseArray(userArrStr, classOf[User])
println(users)
}
}
case class User(name:String,age:Int){
}
输出结果
[{"age":15,"name":"lili"},{"age":15,"name":"tom"}]
[User(lili,15), User(tom,15)]
下面是jsonArray的一个练习,注意:为了加深jsonArray的练习,原字符串是一个jsonArray,我们进行处理的是内层的displays的那层jsonArray,可自行解析看一下
public class test0724 {
public static void main(String[] args) {
// String jsonStr = "[{\"name\":\"xuwei\",\"sex\":\"male\"},{\"name\":\"lili\",\"sex\":\"fale\"}]";
String jsonStr2 = "[{\"common\":{\"ar\":\"110000\",\"uid\":\"2\"},\"displays\":[{\"display_type\":\"activity\",\"item\":\"1\"},{\"display_type\":\"query\",\"item\":\"6\"}],\"ts\":1655522394000},{\"common\":{\"ar\":\"880000\",\"uid\":\"3\"},\"displays\":[{\"display_type\":\"cart\",\"item\":\"8\"},{\"display_type\":\"order\",\"item\":\"8\"}],\"ts\":1655522394000}]";
//String jsonStr3 = "[{\"common\":{\"ar\":\"110000\",\"uid\":\"2\"},\"displays\":[{\"display_type\":\"activity\"},{\"display_type\":\"query\"}],\"ts\":1655522394000},{\"common\":{\"ar\":\"880000\",\"uid\":\"3\"},\"displays\":[{\"display_type\":\"activity\"},{\"display_type\":\"query\"}],\"ts\":1655522394000}]";
//原字符串为一个jasonArray字符串 解析为jsonArray
JSONArray jsonArray = JSON.parseArray(jsonStr2);
List<Displays> displaysAll = new ArrayList<>();
//遍历jsonArray
for (Object js : jsonArray) {
//将每个js转换为jsonObj
JSONObject jsonObject = JSON.parseObject(js.toString());
//获取内层的jsonArr
JSONArray displaysJsonArr = jsonObject.getJSONArray("displays");
//A方法 (运用上文方法进行处理)
String jsonArrStr = displaysJsonArr.toString();
List<Displays> displaysList2 = JSON.parseArray(jsonArrStr, Displays.class);
//B方法 (直接对displaysJsonArr进行转换 这样更简单)
List<Displays> displaysList1 = displaysJsonArr.toJavaList(Displays.class);
//合并循环中的list到一个最终list
displaysAll.addAll(displaysList1);
}
System.out.println(displaysAll);
}
}
@Data
class Displays{
String display_type;
String item;
}
输出结果 A和B相同
[Displays(display_type=activity, item=1), Displays(display_type=query, item=6), Displays(display_type=cart, item=8), Displays(display_type=order, item=8)]