Heim  >  Artikel  >  Java  >  Beispiele für JSON-Parsing und Serialisierung mit Jackson unter Java

Beispiele für JSON-Parsing und Serialisierung mit Jackson unter Java

高洛峰
高洛峰Original
2017-02-16 16:47:141312Durchsuche

In diesem Artikel werden hauptsächlich Beispiele für die JSON-Analyse und -Serialisierung mit Jackson unter Java vorgestellt. Interessierte Freunde können darauf verweisen.

Zu den gängigen JSON-Klassenbibliotheken unter Java gehören Gson, JSON-lib und Jackson. Im Projekt wird Jackson hauptsächlich zum Konvertieren von JSON- und Java-Objekten verwendet es zu tun.

1. Vorbereitung

Besuchen Sie zunächst die offizielle Website, um das Jackson-Toolkit herunterzuladen. Jackson verfügt über die 1.x-Serie und die 2.x-Serie. Die neueste Version der 2.x-Serie ist 2.2.3. Die 2.x-Serie verfügt über 3 JAR-Pakete, die heruntergeladen werden müssen:

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. Konvertieren Sie das JAVA-Objekt in JSON [JSON-Serialisierung]

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 zu Java-Klasse [JSON-Deserialisierung]

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-Anmerkungen

Jackson stellt eine Reihe von Anmerkungen zur Verfügung, um die Steuerung der JSON-Serialisierung und -Deserialisierung zu erleichtern.

@JsonIgnore Diese Annotation wird für Attribute verwendet und dient dazu, dieses Attribut beim Ausführen von JSON-Vorgängen zu ignorieren.

@JsonFormat Diese Annotation wird für Attribute verwendet, um den Datumstyp direkt in das gewünschte Format zu konvertieren, z. B. @JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss") .

@JsonProperty Diese Annotation wird für Attribute verwendet. Ihre Funktion besteht darin, den Namen des Attributs in einen anderen Namen zu serialisieren. Beispielsweise wird das trueName-Attribut in name, @ serialisiert. JsonProperty( „name“).

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"} 
  } 
}

Das Obige ist der gesamte Inhalt dieses Artikels, I Ich hoffe, dass es für alle nützlich sein wird. Das Lernen ist hilfreich und ich hoffe, dass jeder die chinesische PHP-Website unterstützen wird.

Weitere Artikel zu JSON-Parsing- und Serialisierungsbeispielen mit Jackson unter Java finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn