Skip to content

Commit 362f6f2

Browse files
committed
javalib-io-json 示例
1 parent c9b265a commit 362f6f2

File tree

11 files changed

+640
-0
lines changed

11 files changed

+640
-0
lines changed

javalib-io-json/pom.xml

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?xml version="1.0"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
4+
xmlns="http://maven.apache.org/POM/4.0.0">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>io.github.dunwu</groupId>
8+
<artifactId>javalib-io-json</artifactId>
9+
<version>1.0.0</version>
10+
11+
<name>javalib-io-json</name>
12+
<description>Java Json Lib Examples</description>
13+
14+
<properties>
15+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16+
<java.version>1.8</java.version>
17+
<maven.compiler.source>${java.version}</maven.compiler.source>
18+
<maven.compiler.target>${java.version}</maven.compiler.target>
19+
<dunwu.version>0.4.8</dunwu.version>
20+
</properties>
21+
22+
<dependencies>
23+
<!--serialization-->
24+
<dependency>
25+
<groupId>de.ruedigermoeller</groupId>
26+
<artifactId>fst</artifactId>
27+
<version>2.56</version>
28+
</dependency>
29+
30+
<dependency>
31+
<groupId>com.alibaba</groupId>
32+
<artifactId>fastjson</artifactId>
33+
</dependency>
34+
<dependency>
35+
<groupId>com.fasterxml.jackson.core</groupId>
36+
<artifactId>jackson-databind</artifactId>
37+
</dependency>
38+
<dependency>
39+
<groupId>com.google.code.gson</groupId>
40+
<artifactId>gson</artifactId>
41+
<version>2.8.6</version>
42+
</dependency>
43+
44+
<dependency>
45+
<groupId>org.projectlombok</groupId>
46+
<artifactId>lombok</artifactId>
47+
</dependency>
48+
<dependency>
49+
<groupId>io.github.dunwu</groupId>
50+
<artifactId>dunwu-common</artifactId>
51+
</dependency>
52+
53+
<!--test-->
54+
<dependency>
55+
<groupId>junit</groupId>
56+
<artifactId>junit</artifactId>
57+
<scope>test</scope>
58+
</dependency>
59+
<dependency>
60+
<groupId>org.assertj</groupId>
61+
<artifactId>assertj-core</artifactId>
62+
<scope>test</scope>
63+
</dependency>
64+
</dependencies>
65+
<dependencyManagement>
66+
<dependencies>
67+
<dependency>
68+
<groupId>io.github.dunwu</groupId>
69+
<artifactId>dunwu-dependencies</artifactId>
70+
<version>${dunwu.version}</version>
71+
<type>pom</type>
72+
<scope>import</scope>
73+
</dependency>
74+
</dependencies>
75+
</dependencyManagement>
76+
77+
<build>
78+
<resources>
79+
<resource>
80+
<directory>src/main/resources</directory>
81+
</resource>
82+
</resources>
83+
</build>
84+
</project>
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
package io.github.dunwu.javalib.json.fastjson;
2+
3+
import com.alibaba.fastjson.annotation.JSONField;
4+
5+
import java.time.LocalDate;
6+
import java.time.LocalDateTime;
7+
import java.util.Date;
8+
import java.util.Objects;
9+
10+
/**
11+
* <code>@JSONField</code> 的使用
12+
* <p>
13+
* <code>@JSONField</code> 可以配置在 getter/setter 方法上
14+
* <p>
15+
* <code>@JSONField</code> 可以配置在字段上,但是要求字段必须是 public
16+
*
17+
* @author Zhang Peng
18+
* @see <a href="https://github.com/alibaba/fastjson/wiki/JSONField"><code>@JSONField</code></a>
19+
* @since 2019-03-18
20+
*/
21+
public class FastjsonFeildBean {
22+
23+
private int id;
24+
25+
// 配置date序列化和反序列使用yyyyMMdd日期格式
26+
@JSONField(format = "yyyyMMdd")
27+
private Date date1;
28+
29+
// 不序列化
30+
@JSONField(serialize = false, format = "yyyy-MM-dd hh:mm:ss")
31+
private LocalDate date2;
32+
33+
// 不反序列化
34+
@JSONField(deserialize = false, format = "yyyy-MM-dd")
35+
private LocalDateTime date3;
36+
37+
@JSONField(ordinal = 1)
38+
private Double d1;
39+
40+
// 按ordinal排序
41+
@JSONField(ordinal = 2)
42+
private float f1;
43+
44+
public FastjsonFeildBean() {
45+
}
46+
47+
public FastjsonFeildBean(int id, Date date1, LocalDate date2, LocalDateTime date3, float f1, Double d1) {
48+
this.id = id;
49+
this.date1 = date1;
50+
this.date2 = date2;
51+
this.date3 = date3;
52+
this.f1 = f1;
53+
this.d1 = d1;
54+
}
55+
56+
@Override
57+
public String toString() {
58+
return "FastjsonAnnotationBean{" +
59+
"id=" + id +
60+
", date1=" + date1 +
61+
", date2=" + date2 +
62+
", date3=" + date3 +
63+
", f1=" + f1 +
64+
", f2=" + d1 +
65+
'}';
66+
}
67+
68+
@Override
69+
public boolean equals(Object o) {
70+
if (this == o) {
71+
return true;
72+
}
73+
if (!(o instanceof FastjsonFeildBean)) {
74+
return false;
75+
}
76+
FastjsonFeildBean that = (FastjsonFeildBean) o;
77+
return id == that.id &&
78+
Float.compare(that.f1, f1) == 0 &&
79+
Objects.equals(date1, that.date1) &&
80+
Objects.equals(date2, that.date2) &&
81+
Objects.equals(date3, that.date3) &&
82+
Objects.equals(d1, that.d1);
83+
}
84+
85+
@Override
86+
public int hashCode() {
87+
return Objects.hash(id, date1, date2, date3, f1, d1);
88+
}
89+
90+
@JSONField(name = "ID")
91+
public int getId() {
92+
return id;
93+
}
94+
95+
@JSONField(name = "ID")
96+
public void setId(int id) {
97+
this.id = id;
98+
}
99+
100+
public Date getDate1() {
101+
return date1;
102+
}
103+
104+
public void setDate1(Date date1) {
105+
this.date1 = date1;
106+
}
107+
108+
public LocalDate getDate2() {
109+
return date2;
110+
}
111+
112+
public void setDate2(LocalDate date2) {
113+
this.date2 = date2;
114+
}
115+
116+
public LocalDateTime getDate3() {
117+
return date3;
118+
}
119+
120+
public void setDate3(LocalDateTime date3) {
121+
this.date3 = date3;
122+
}
123+
124+
public float getF1() {
125+
return f1;
126+
}
127+
128+
public void setF1(float f1) {
129+
this.f1 = f1;
130+
}
131+
132+
public Double getD1() {
133+
return d1;
134+
}
135+
136+
public void setD1(Double d1) {
137+
this.d1 = d1;
138+
}
139+
140+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package io.github.dunwu.javalib.json.fastjson;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnore;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
6+
7+
/**
8+
* @author Zhang Peng
9+
* @since 2019-03-18
10+
*/
11+
@JsonPropertyOrder(alphabetic = true)
12+
public class JacksonAnnotationBean {
13+
14+
private String Name;
15+
16+
private int Age;
17+
18+
@JsonIgnore
19+
private String Sex;
20+
21+
public JacksonAnnotationBean() {
22+
}
23+
24+
public JacksonAnnotationBean(String name, int age, String sex) {
25+
Name = name;
26+
Age = age;
27+
Sex = sex;
28+
}
29+
30+
@JsonProperty("username")
31+
public String getName() {
32+
return Name;
33+
}
34+
35+
public void setName(String name) {
36+
Name = name;
37+
}
38+
39+
public int getAge() {
40+
return Age;
41+
}
42+
43+
public void setAge(int age) {
44+
Age = age;
45+
}
46+
47+
public String getSex() {
48+
return Sex;
49+
}
50+
51+
public void setSex(String sex) {
52+
Sex = sex;
53+
}
54+
55+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package io.github.dunwu.javalib.json;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
import lombok.NoArgsConstructor;
6+
import lombok.ToString;
7+
import lombok.experimental.Accessors;
8+
9+
import java.time.LocalDate;
10+
import java.time.LocalDateTime;
11+
import java.util.Date;
12+
import java.util.List;
13+
import java.util.Map;
14+
15+
/**
16+
* 定义一个满足大多数情况的 Bean 结构(含 JDK8 数据类型),使得各种 Json 库测试性能时能相对公平
17+
*
18+
* @author <a href="mailto:forbreak@163.com">Zhang Peng</a>
19+
* @since 2019-11-22
20+
*/
21+
@Data
22+
@ToString
23+
@Accessors(chain = true)
24+
@NoArgsConstructor
25+
@AllArgsConstructor
26+
public class TestBean {
27+
28+
private int i1;
29+
30+
private Integer i2;
31+
32+
private float f1;
33+
34+
private Double d1;
35+
36+
private Date date1;
37+
38+
private LocalDateTime date2;
39+
40+
private LocalDate date3;
41+
42+
private Color color;
43+
44+
private String[] strArray;
45+
46+
private List<Integer> intList;
47+
48+
private Map<String, Object> map;
49+
50+
public static enum Color {
51+
RED,
52+
YELLOW,
53+
BLUE
54+
}
55+
56+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package io.github.dunwu.javalib.json;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
import lombok.NoArgsConstructor;
6+
import lombok.ToString;
7+
import lombok.experimental.Accessors;
8+
9+
import java.util.Date;
10+
import java.util.List;
11+
import java.util.Map;
12+
13+
/**
14+
* 定义一个满足大多数情况的 Bean 结构(不含 JDK8 数据类型),使得各种 Json 库测试性能时能相对公平
15+
*
16+
* @author <a href="mailto:forbreak@163.com">Zhang Peng</a>
17+
* @since 2019-11-22
18+
*/
19+
@Data
20+
@ToString
21+
@Accessors(chain = true)
22+
@NoArgsConstructor
23+
@AllArgsConstructor
24+
public class TestBean2 {
25+
26+
private int i1;
27+
28+
private Integer i2;
29+
30+
private float f1;
31+
32+
private Double d1;
33+
34+
private Date date1;
35+
36+
private Color color;
37+
38+
private String[] strArray;
39+
40+
private List<Integer> intList;
41+
42+
private Map<String, Object> map;
43+
44+
public static enum Color {
45+
RED,
46+
YELLOW,
47+
BLUE
48+
}
49+
50+
}

0 commit comments

Comments
 (0)