Heim >Java >javaLernprogramm >Wie SpringBoot Jackson zum Formatieren der Zeit verwendet
Erstellen Sie das Projekt, fügen Sie Abhängigkeiten hinzu
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency>
Erstellen Sie die Entitätsklasse UserDTO
Fügen Sie Attribute hinzu und lassen Sie die Get- und Set-Methoden weg.
private String id; private String username; private Date createTime;
UserController erstellen
Schreiben Sie den Code der Kontrollschicht
@RestController public class UserController { @GetMapping("/getUser") public List<userdto> getUser() { List<userdto> userList = new ArrayList<userdto>(); for (int i=1; i<p>Rufen Sie die Schnittstelle auf: http://localhost:8080/getUser</p> <p><img src="https://img.php.cn/upload/article/000/887/227/168501804652134.png" alt="Wie SpringBoot Jackson zum Formatieren der Zeit verwendet"></p> <p>Das Ergebnis ist offensichtlich nicht das, was wir brauchen, also müssen wir die Zeit formatieren. Und es gibt ein Zeitzonenproblem, meine aktuelle Zeit ist 22:44 Uhr. </p> <h4>Die erste Methode ist die Verwendung von Annotationen<br> </h4> <p>Fügen Sie die Annotation @JsonFormat zu den Feldern hinzu, die konvertiert werden müssen. Diese Annotation stammt von Jackson und ist in das Webpaket integriert. </p> <pre class="brush:php;toolbar:false">import com.fasterxml.jackson.annotation.JsonFormat; private String id; private String username; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Date createTime;
Muster: Das Format der Uhrzeit und des Datums, das konvertiert werden muss
Zeitzone: Die Zeit wird auf den East Eighth District eingestellt, um Zeitfehler bei der Konvertierung zu vermeiden
Aufrufschnittstelle: http://localhost:8080/ getUser
Complete , aber das hat auch Nachteile. Wenn ich hundert Entitäten habe, die alle den Typ „Datum“ haben, muss ich Anmerkungen zu hundert Entitäten hinzufügen. Scheint etwas mühsam zu sein.
Die gesamte JSON-Generierung ist untrennbar mit den zugehörigen HttpMessageConverters verbunden.
SpringBoot verwendet standardmäßig Jackson und konfiguriert es standardmäßig. Also lasst es uns ändern.
Globale Suche nach JacksonHttpMessageConvertersConfiguration. Ideen-Tastenkombination: Strg + Umschalt + R
In dieser Klasse gibt es eine Methode, dieJackson2HttpMessageConverter zuordnet und zur Verarbeitung von JSON verwendet wird.
@Bean @ConditionalOnMissingBean( value = {MappingJackson2HttpMessageConverter.class}, ignoredType = {"org.springframework.hateoas.server.mvc.TypeConstrainedMappingJackson2HttpMessageConverter", "org.springframework.data.rest.webmvc.alps.AlpsJsonHttpMessageConverter"} ) MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) { return new MappingJackson2HttpMessageConverter(objectMapper); }
Beachten Sie, dass es zu dieser Methode zwei Annotationen gibt und die @Bean-Annotation nicht eingeführt wird. Einführung der ConditionalOnMissingBean-Annotation.
@ConditionalOnMissingBean: Wenn die angegebene Bean nicht existiert, instanziieren Sie die aktuelle Bean.
Eine Analogie: Wenn Sie sich für eine Anstellung melden, wird Ihr Unternehmen feststellen, dass Sie einen Computer mitgebracht haben, und Ihnen die Nutzung Ihres eigenen Computers gestatten. Wenn Sie keinen Computer mitbringen, wird Ihnen die Nutzung des Computers des Unternehmens gestattet. SpringBoot macht dasselbe. Wenn Sie es nicht bereitstellen, wird das Standardmodell verwendet.
Neues MyConfig
import java.text.SimpleDateFormat; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.fasterxml.jackson.databind.ObjectMapper; @Configuration public class MyConfig { @Bean MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverterConfiguration() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper om = new ObjectMapper(); //全局修改josn时间格式 om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")); converter.setObjectMapper(om); return converter; } }
stellt eine Bean von MappingJackson2HttpMessageConverter bereit, sodass Springboot das verwenden wird, was wir bereitstellen.
Kommentieren Sie die Annotation der Benutzerentität
Rufen Sie die Schnittstelle auf: http://localhost:8080/getUser
OK, diese Methode ist auch möglich.
ObjectMapper bereitstellen
Sie können auch einen ObjectMapper bereitstellen und den oben bereitgestellten MappingJackson2HttpMessageConverter auskommentieren.
import java.text.SimpleDateFormat; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.fasterxml.jackson.databind.ObjectMapper; @Bean ObjectMapper objectMapper() { ObjectMapper om = new ObjectMapper(); om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd")); return om; }
Aufrufschnittstelle: http://localhost:8080/getUser
Hinweis: Die beiden oben genannten Methoden werden global geändert!
Ändern Sie die Standardkonfiguration in application.yml oder Properties
yml
spring: jackson: date-format: yyyy/MM/dd timezone: GMT+8
properties
spring.jackson.date-format=yyyy-MM-dd HH:mm spring.jackson.time-zone=GMT+8
Wenn die Konfiguration für den zweiten und den dritten Weg gleichzeitig vorhanden ist, verwenden Sie den zweiten Weg, Herr .
Wenn alle drei Methoden vorhanden sind, ist das Anmerkungsformat in der Entitätsklasse das Hauptformat.
Das obige ist der detaillierte Inhalt vonWie SpringBoot Jackson zum Formatieren der Zeit verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!