FastJson使用例(Java、Scal版)
11011 ワード
0.ディレクトリ FastJson紹介 FastJsonの3つのコアクラス Maven Java API 反プロローグ 逆順序化単純Json文字列 逆順序で簡単なJSON文字列をJavaオブジェクト群 とする。逆順序化された複雑なJSON文字列 プロローグ プログレッシブおよびアンチプログレッシブ JsonObjectのいくつかの操作 jsonArayのいくつかの操作 Scara API 反プロローグ demoログの内容 逆序文化単純json文字列 アンチプログレッシブシンプルなjson文字列グループ String処理 List処理 1.FastJson概要
JSONプロトコルは日常開発でよく使われています。前後端のデータインターフェース、ログフィールドの保存などを含めて、JSONプロトコルを採用しています。FastJsonはアリのオープンソースフレームで、とても使いやすいです。ここで簡単な使い方をまとめて、デモを作ります。Javaバージョン以外に、Sparkでもよくログを洗浄していますので、Scaraバージョンを配合しています。後で確認して使いやすいです。完全コードはGithubを参照できます。https://github.com/tygxy/BigData
2.FastJsonの3つのコアクラス JSON:fastjsonの解像度は、json文字列とjavaBean、Jsonオブジェクトの変換 に使用されます。 JSONObject:fastJsonが提供するjsonオブジェクト JSONArray:fastJsonは、json配列オブジェクト を提供する。
3.Maven
4.1反秩序化逆プロローグ簡単なJson文字列 は、JavaBeanのUserクラス を作成する。アンチプログレッシブ動作 逆順序で簡単なJSON文字列をJavaオブジェクト群 とする。逆順序化された複雑なJSON文字列 は、JavaBeanのCourse類、Student類、Techer類 をそれぞれ作成する。アンチプログレッシブ動作 は、Java Beanオブジェクト をプログレッシブ化する。
5.1アンチプログレッシブ demoログの内容 data.log data 1.log 逆序文化単純json文字列 逆序列化単純json文字列グループは、行が多くなることでjson文字列を解析することができます。これもいい方法が見つけられませんでした。読者の指導を歓迎します。 方法1:文字列処理 方法2:List は、簡単なjava Beanオブジェクト をプログレッシブ化する。https://segmentfault.com/a/1190000011212806 https://www.cnblogs.com/cdf-opensource-007/p/7106018.html https://github.com/alibaba/fastjson https://blog.csdn.net/universsky2015/article/details/77965563?locationNum=9&fps=1
JSONプロトコルは日常開発でよく使われています。前後端のデータインターフェース、ログフィールドの保存などを含めて、JSONプロトコルを採用しています。FastJsonはアリのオープンソースフレームで、とても使いやすいです。ここで簡単な使い方をまとめて、デモを作ります。Javaバージョン以外に、Sparkでもよくログを洗浄していますので、Scaraバージョンを配合しています。後で確認して使いやすいです。完全コードはGithubを参照できます。https://github.com/tygxy/BigData
2.FastJsonの3つのコアクラス
3.Maven
com.alibaba
fastjson
1.2.47
4.Java API4.1反秩序化
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
String jsonString = "{\"name\":\" \",\"age\":50}";
User user= JSON.parseObject(jsonString,User.class);
System.out.println("name:"+user.getName()+" age:"+user.getAge());
// name: age:50
String jsonArrayString = "[{\"name\":\" \",\"age\":50},{\"name\":\" \",\"age\":51}]";
List userList = JSON.parseArray(jsonArrayString,User.class);
Iterator it = userList.iterator();
while (it.hasNext()) {
User u = (User)it.next();
System.out.println("name:"+u.getName()+" age:"+u.getAge());
}
// name: age:50
name: age:51
public class Course {
private String courseName;
private String code;
public Course (String courseName, String code){
this.setCourseName(courseName);
this.setCode(code);
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
public class Student {
private int id;
private String studentName;
private int age;
public Student(int id, String studentName, int age) {
this.setId(id);
this.setStudentName(studentName);
this.setAge(age);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Teacher {
private String teacherName;
private int age;
private Course course;
private List students;
public Teacher(String teacherName, int age, Course course, List students) {
this.setTeacherName(teacherName);
this.setAge(age);
this.setCourse(course);
this.setStudents(students);
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
public List getStudents() {
return students;
}
public void setStudents(List students) {
this.students = students;
}
}
String complexJsonString = "{\"teacherName\":\"crystall\",\"age\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"id\":1,\"studentName\":\"lily\",\"age\":12},{\"id\":2,\"studentName\":\"lucy\",\"age\":15}]}";
Teacher teacher = JSON.parseObject(complexJsonString,Teacher.class);
4.2序列化User u = new User();
u.setName(" ");
u.setAge(30);
System.out.println(JSON.toJSONString(u));
// {"age":30,"name":" "}
User u1 = new User();
u1.setAge(30);
System.out.println(JSON.toJSONString(u1,SerializerFeature.WriteMapNullValue)); // null, {"age":30,"name":null}
System.out.println(JSON.toJSONString(u1,SerializerFeature.WriteNullStringAsEmpty)); // "", {"age":30,"name":""}
4.3シーケンス化およびアンチシーケンス日付Date date = new Date();
String dateString = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss");
System.out.println(dateString);
// "2018-08-03 09:44:21"
String dateString1 = "{\"time\":\"2018-08-01 22:22:22\"}";
System.out.println(JSON.parseObject(dateString1));
// {"time":"2018-08-01 22:22:22"}
4.4 Json Objectのいくつかの操作String jsonString1 = "{\"name\":\" \",\"age\":50}";
JSONObject jsonObject = JSON.parseObject(jsonString1);
System.out.println(jsonObject.keySet()); // key , [name, age]
if(jsonObject.containsKey("sex")) { // key , false
System.out.println(true);
} else {
System.out.println(false);
}
jsonObject.put("sex","man"); // k/v , {"sex":"man","name":" ","age":50}
System.out.println(jsonObject);
if (jsonObject.containsValue("man")) { // value , false
System.out.println(true);
} else {
System.out.println(false);
}
4.5 JsonArayのいくつかの操作String jsonArrayString1 = "[{\"id\":1,\"studentName\":\"lily\",\"age\":12},{\"id\":2,\"studentName\":\"lucy\",\"age\":15}]";
JSONArray jsonArray = JSON.parseArray(jsonArrayString1);
for (int i = 0; i < jsonArray.size(); i++) { //
JSONObject jsonObj= jsonArray.getJSONObject(i);
System.out.println(jsonObj.get("id"));
}
Student s3 = new Student(3," ",15);
jsonArray.add(s3); // jsonobject , 3
System.out.println(jsonArray.size());
if(jsonArray.contains(s3)) { // , true
System.out.println(true);
} else {
System.out.println(false);
}
5.Scara API5.1アンチプログレッシブ
{"name":" ","age":10}
{"name":" ","age":11}
{"name":" "}
{"age":11}
{"data":[{"label":"123","acc":1,"version":"4.3.1"}]}
{"data":[{"label":"789","acc":1,"version":"4.3.1"},{"label":"78","acc":100,"version":"4.3.1"}]}
{"data":[{"label":"5356","acc":1,"version":"4.3.1"}]}
val spark = SparkSession.builder().master("local[2]").appName("FastJsonTest").getOrCreate()
val input1 = "data.log"
val jsonRDD1 = spark.sparkContext.textFile(input1)
val dataRDD1 = jsonRDD1.map(json => {
val jsonObject = JSON.parseObject(json)
val name = jsonObject.getOrDefault("name",null)
val age = jsonObject.getOrDefault("age",null)
(name,age)
})
dataRDD1.foreach(println)
//
( ,null)
(null,11)
( ,10)
( ,11)
val input2 = "data1.log"
val jsonRDD2 = spark.sparkContext.textFile(input2)
val dataRDD2 = jsonRDD2.map(json => {
JSON.parseObject(json).getJSONArray("data").toString
}).map(x => x.substring(1,x.length-1).replace("},{","}---{")) // [], },{ }---{,
.flatMap(x => x.split("---")) // ----
.map(x => JSON.parseObject(x))
val data2 = dataRDD2.map(jsonObject => {
val version = jsonObject.getOrDefault("version",null)
val label = jsonObject.getOrDefault("label",null)
val acc = jsonObject.getOrDefault("acc",null)
(version,label,acc)
})
data2.foreach(println)
//
(4.3.1,5356,1)
(4.3.1,123,1)
(4.3.1,789,1)
(4.3.1,78,100)
val dataRDD3 = jsonRDD2.flatMap(json => {
val jsonArray = JSON.parseObject(json).getJSONArray("data")
var dataList : List[String] = List() // List
for (i JSON.parseObject(x))
val data3 = dataRDD3.map(jsonObject => {
val version = jsonObject.getOrDefault("version",null)
val label = jsonObject.getOrDefault("label",null)
val acc = jsonObject.getOrDefault("acc",null)
(version,label,acc)
})
data3.foreach(println)
//
(4.3.1,5356,1)
(4.3.1,123,1)
(4.3.1,789,1)
(4.3.1,78,100)
5.2プロローグval arr = Seq("tom:10", "bob:14", "hurry:9")
val dataRdd = spark.sparkContext.parallelize(arr)
val dataString = dataRdd.map(x => {
val arr = x.split(":")
val name = arr(0)
val age = arr(1).toInt
val u = new User(name,age)
u
}).map(x => {
JSON.toJSONString(x,SerializerFeature.WriteMapNullValue) // SerializerFeature ,
})
dataString.foreach(println)
//
{"age":10,"name":"tom"}
{"age":14,"name":"bob"}
{"age":9,"name":"hurry"}
6.参考