이 글은 주로 Java에서 Jackson을 사용한 JSON 구문 분석 및 직렬화 예제를 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.
Java의 일반적인 Json 클래스 라이브러리에는 Gson, JSON-lib 및 Jackson 등이 있습니다. Jackson은 프로젝트에서 주로 JSON 및 Java 개체를 변환하는 데 사용됩니다. 그것을하기 위해.
1. 준비
먼저 공식 홈페이지에 접속하여 Jackson 툴킷을 다운로드하세요. Jackson에는 1.x 시리즈와 2.x 시리즈가 있습니다. 현재 2.x 시리즈의 최신 버전은 2.2.3입니다. 2.x 시리즈에는 다운로드해야 하는 3개의 jar 패키지가 있습니다. >
jackson-core -2.2.3.jar
jackson-annotations-2.2.3.jar
jackson-databind-2.2.3.jar
//JSON序列化和反序列化使用的User类 import java.util.Date; public class User { private String name; private Integer age; private Date birthday; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }2. JAVA 객체를 JSON으로 변환 [JSON 직렬화]
import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonDemo { public static void main(String[] args) throws ParseException, IOException { User user = new User(); user.setName("小民"); user.setEmail("xiaomin@sina.com"); user.setAge(20); SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd"); user.setBirthday(dateformat.parse("1996-10-01")); /** * ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。 * ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。 * writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。 * writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。 * writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。 * writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。 */ ObjectMapper mapper = new ObjectMapper(); //User类转JSON //输出结果:{"name":"小民","age":20,"birthday":844099200000,"email":"xiaomin@sina.com"} String json = mapper.writeValueAsString(user); System.out.println(json); //Java集合转JSON //输出结果:[{"name":"小民","age":20,"birthday":844099200000,"email":"xiaomin@sina.com"}] List<User> users = new ArrayList<User>(); users.add(user); String jsonlist = mapper.writeValueAsString(users); System.out.println(jsonlist); } }3. JSON을 Java 클래스로 [JSON 역직렬화]
import java.io.IOException; import java.text.ParseException; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonDemo { public static void main(String[] args) throws ParseException, IOException { String json = "{\"name\":\"小民\",\"age\":20,\"birthday\":844099200000,\"email\":\"xiaomin@sina.com\"}"; /** * ObjectMapper支持从byte[]、File、InputStream、字符串等数据的JSON反序列化。 */ ObjectMapper mapper = new ObjectMapper(); User user = mapper.readValue(json, User.class); System.out.println(user); } }4. JSON 주석
Jackson은 JSON 직렬화 및 역직렬화 제어를 용이하게 하는 일련의 주석을 제공합니다.
@JsonIgnore 이 주석은 속성에 사용되며 JSON 작업을 수행할 때 이 속성을 무시하는 데 사용됩니다.
@JsonFormat 이 주석은 @JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss") 와 같이 Date 유형을 원하는 형식으로 직접 변환하기 위해 속성에 사용됩니다.
@JsonProperty 이 주석은 속성에 사용됩니다. 해당 기능은 속성 이름을 다른 이름으로 직렬화하는 것입니다. 예를 들어 trueName 속성은 name
@으로 직렬화됩니다. JsonProperty("이름").
import java.util.Date; import com.fasterxml.jackson.annotation.*; public class User { private String name; //不JSON序列化年龄属性 @JsonIgnore private Integer age; //格式化日期属性 @JsonFormat(pattern = "yyyy年MM月dd日") private Date birthday; //序列化email属性为mail @JsonProperty("mail") private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonDemo { public static void main(String[] args) throws ParseException, IOException { User user = new User(); user.setName("小民"); user.setEmail("xiaomin@sina.com"); user.setAge(20); SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd"); user.setBirthday(dateformat.parse("1996-10-01")); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(user); System.out.println(json); //输出结果:{"name":"小民","birthday":"1996年09月30日","mail":"xiaomin@sina.com"} } }
위 내용은 이 글의 전체 내용이므로, 모든 분들의 학습에 도움이 되기를 바랍니다. 또한 모든 분들이 PHP 중국어 웹사이트를 지지해주시기를 바랍니다.
Java에서 Jackson을 사용한 JSON 구문 분석 및 직렬화 예제와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!