


Explication détaillée de la fa?on de résoudre le problème de formatage de SpringMVC renvoyant les données JSON de l'heure Java8
Mar 07, 2017 am 10:03 AMCet article présente principalement comment résoudre le problème de formatage de SpringMVC renvoyant des données JSON en temps Java8. L'éditeur pense que c'est assez bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un coup d'?il
Parfois, l'annotation @ResponseBody est utilisée lors du renvoi d'une réponse au format JSON dans Spring MVC, mais elle sera très gênante lors du traitement du temps en java8. Généralement, le HTTPMessageConverter que nous utilisons. est MappingJackson2HttpMessageConverter, le format d'heure qu'il renvoie par défaut est le suivant?:
"startDate" : { "year" : 2010, "month" : "JANUARY", "dayOfMonth" : 1, "dayOfWeek" : "FRIDAY", "dayOfYear" : 1, "monthValue" : 1, "hour" : 2, "minute" : 2, "second" : 0, "nano" : 0, "chronology" : { "id" : "ISO", "calendarType" : "iso8601" } }
Mais nous ne reviendrons pas cela au front-end, pensez-y LocalDate Le format à renvoyer est 2016-11-26 et le format que LocalDateTime souhaite renvoyer est des données telles que 2016-11-26 21:04:34. A travers une recherche de projet et la consultation d'informations pertinentes, voici deux manières de le mettre en ?uvre dans une recherche personnelle.
Solution 1?:
S'il s'agit d'un projet maven, introduisez le package jar suivant dans le pom?:
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.8.5</version> </dependency>
Ajoutez ensuite une annotation @JsonSerializer sur la fonction get du champ POJO que vous souhaitez JSONiser, comme suit
import com.fasterxml.jackson.annotation.JsonFormat; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") public LocalDateTime getBirthday() { return this.loginTime; } @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") public LocalDateTime getLastLoginTime() { return this.loginTime; }
L'avantage de cette méthode est que différentes méthodes d'affichage peuvent être définies pour des types de domaines spécifiques. Cependant, l'avantage est aussi un inconvénient, car chaque attribut de date doit être ajouté manuellement. L'attribut est généralement nécessaire et il est nécessaire d'introduire un package jar supplémentaire de jsr310.
Solution 2?:
Héritez ObjectMapper pour renvoyer la cha?ne json. MappingJackson2HttpMessageConverter utilise principalement ObjectMapper pour renvoyer des cha?nes json. Ici, nous écrivons une classe JsonUtil, obtenons l'ObjectMapper pour enregistrer le JsonSerializer
/** * json處理工具類 * * */ @Component public class JsonUtil { private static final ObjectMapper mapper; public ObjectMapper getMapper() { return mapper; } static { mapper = new ObjectMapper(); SimpleModule module = new SimpleModule(); module.addSerializer(LocalDate.class, new LocalDateSerializer()); module.addSerializer(LocalTime.class, new LocalTimeSerializer()); module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer()); mapper.registerModule(module); } public static String toJson(Object obj) { try { return mapper.writeValueAsString(obj); } catch (Exception e) { throw new RuntimeException("轉(zhuǎn)換json字符失敗!"); } } public <T> T toObject(String json, Class<T> clazz) { try { return mapper.readValue(json, clazz); } catch (IOException e) { throw new RuntimeException("將json字符轉(zhuǎn)換為對(duì)象時(shí)失敗!"); } } } class LocalDateSerializer extends JsonSerializer<LocalDate> { private static final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); @Override public void serialize(LocalDate value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeString(dateFormatter.format(value)); } } class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> { private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @Override public void serialize(LocalDateTime value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeString(dateTimeFormatter.format(value)); } } class LocalTimeSerializer extends JsonSerializer<LocalTime> { private static final DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); @Override public void serialize(LocalTime value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeString(timeFormatter.format(value)); } }
Ensuite, dans le fichier de configuration springmvc, remplacez
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper" value="#{jsonUtil.mapper}" /> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
Ensuite, plusieurs types de date et d'heure dans java8 peuvent être affichés normalement et de manière conviviale. L'avantage est que les types tels que la date et l'heure sont gérés de manière globale et uniforme, mais l'inconvénient est qu'un certain champ du POJO est spécialement traité.
Ce qui précède est une explication détaillée de la fa?on de résoudre le problème de formatage de SpringMVC renvoyant des données JSON en temps Java8. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.miracleart.cn). !

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les méthodes d'optimisation des performances pour la conversion des tableaux PHP en JSON incluent?: l'utilisation d'extensions JSON et de la fonction json_encode()?; l'ajout de l'option JSON_UNESCAPED_UNICODE pour éviter l'échappement de caractères?; l'utilisation de tampons pour améliorer les performances d'encodage de boucle et l'utilisation d'un tiers?; Bibliothèque d'encodage JSON.

Les données JSON peuvent être enregistrées dans une base de données MySQL à l'aide de la bibliothèque gjson ou de la fonction json.Unmarshal. La bibliothèque gjson fournit des méthodes pratiques pour analyser les champs JSON, et la fonction json.Unmarshal nécessite un pointeur de type cible pour désorganiser les données JSON. Les deux méthodes nécessitent la préparation d'instructions SQL et l'exécution d'opérations d'insertion pour conserver les données dans la base de données.

Les annotations dans la bibliothèque Jackson contr?lent la sérialisation et la désérialisation JSON : Sérialisation : @JsonIgnore : Ignorer la propriété @JsonProperty : Spécifiez le nom @JsonGetter : Utilisez la méthode get @JsonSetter : Utilisez la méthode set Désérialisation : @JsonIgnoreProperties : Ignorez la propriété @ JsonProperty : Spécifiez le nom @JsonCreator?: utilisez le constructeur @JsonDeserialize?: logique personnalisée

PHP fournit les fonctions suivantes pour traiter les données JSON : Analyser les données JSON : utilisez json_decode() pour convertir une cha?ne JSON en un tableau PHP. Créer des données JSON?: utilisez json_encode() pour convertir un tableau ou un objet PHP en cha?ne JSON. Obtenez des valeurs spécifiques des données JSON?: utilisez les fonctions de tableau PHP pour accéder à des valeurs spécifiques, telles que des paires clé-valeur ou des éléments de tableau.

Les tableaux PHP peuvent être convertis en cha?nes JSON via la fonction json_encode() (par exemple : $json=json_encode($array);), et inversement, la fonction json_decode() peut être utilisée pour convertir du JSON en tableaux ($array= json_decode($json);) . D'autres conseils incluent d'éviter les conversions profondes, de spécifier des options personnalisées et d'utiliser des bibliothèques tierces.

Analyse des données JSON L'analyse des données JSON est une étape critique dans le traitement de données complexes. En Java, nous pouvons utiliser les méthodes suivantes : Utiliser la bibliothèque Gson : Gson est une bibliothèque d'analyse jsON largement utilisée qui fournit une API concise et efficace, comme indiqué ci-dessous : Gsongson=newGson();JsonObjectjsonObject=gson.fromJson(jsonString ,JsonObject .class) ; Utilisation de la bibliothèque Jackson : Jackson est une autre bibliothèque de traitement JSON populaire qui prend en charge des fonctionnalités riches et la conversion vers d'autres formats (tels que XML), comme indiqué ci-dessous : ObjectMappe

JSONFeed est une alternative RSS basée sur JSON qui a ses avantages simplicité et facilité d'utilisation. 1) JSONFeed utilise le format JSON, qui est facile à générer et à analyser. 2) Il prend en charge la génération dynamique et convient au développement Web moderne. 3) L'utilisation de JSONFeed peut améliorer l'efficacité de la gestion du contenu et l'expérience utilisateur.

RSS a choisi XML au lieu de JSON car: 1) les capacités de structure et de vérification de XML sont meilleures que JSON, ce qui convient aux besoins des structures de données complexes RSS; 2) XML a été largement soutenu à l'époque; 3) Les premières versions de RSS étaient basées sur XML et sont devenues une norme.
