[JAVA] Bean de sortie au format JSON au printemps

pom.xml

pom.xml


	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.1.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
	</dependencies>

Sortie de fichier à l'aide d'ObjectWriter

package kagamihoge.tojsonfile;

import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;

import lombok.AllArgsConstructor;
import lombok.Data;

@SpringBootApplication
public class BeanToJsonFileApplication implements CommandLineRunner {
	public static void main(String[] args) throws InterruptedException {
		SpringApplication.run(BeanToJsonFileApplication.class, args).close();
	}

	@Bean
	public ObjectWriter writer() {
		ObjectMapper mapper = new ObjectMapper();
		ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter());
		return writer;
	}

	@Autowired
	ObjectWriter writer;

	@Override
	public void run(String... args) throws Exception {
		List<Sub> subList = Arrays.asList(new Sub(1, true), new Sub(2, true));
		Top top = new Top("hogeId", null, subList);

		writer.writeValue(Paths.get("json.txt").toFile(), top);
	}

	@Data
	@AllArgsConstructor
	static class Top {
		private String hogeId;
		private String nullValue;
		private List<Sub> subList;
	}

	@Data
	@AllArgsConstructor
	static class Sub {
		private int subId;
		private boolean bool;
	}
}

Exemple de sortie

{
  "hogeId" : "hogeId",
  "nullValue" : null,
  "subList" : [ {
    "subId" : 1,
    "bool" : true
  }, {
    "subId" : 2,
    "bool" : true
  } ]
}

Autres éléments de contrôle

C'est fondamentalement Jackson, donc si vous avez autre chose à faire, cela sort généralement.

Ce qui suit est un exemple.

Convertir la clé d'un étui chameau en étui serpent

import com.fasterxml.jackson.databind.PropertyNamingStrategy;

mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);

Exemple de sortie.

{
  "hoge_id" : "hogeId",
  "null_value" : null,
  "sub_list" : [ {
    "sub_id" : 1,
    "bool" : true
  }, {
    "sub_id" : 2,
    "bool" : true
  } ]
}

Changer la clé en n'importe quelle valeur


@JsonProperty("alternateId")
private String hogeId;

Sortie sous forme de chaîne

System.out.println(writer.writeValueAsString(top));

Si vous n'avez pas besoin du formatage JSON

import com.fasterxml.jackson.core.util.MinimalPrettyPrinter;

ObjectWriter writer = mapper.writer(new MinimalPrettyPrinter());

Exemple de sortie.

{"null_value":null,"sub_list":[{"sub_id":1,"bool":true},{"sub_id":2,"bool":true}],"alternateId":"hogeId"}

Recommended Posts

Bean de sortie au format JSON au printemps
Sortie du journal Spring Boot au format json
Intégré dans Spring Boot à l'aide d'un fichier de définition de bean nommé application.xml
Priorité d'accès aux fichiers statiques dans Spring Boot
Mémorandum de téléchargement de fichier local avec Spring Boot
DI SessionScope Bean dans le filtre Spring Boot 2
Sortie des journaux de demande et de réponse avec Spring Boot
Comment se lier avec un fichier de propriétés dans Spring Boot
[Java] Quelque chose est affiché comme "-0.0" dans la sortie
La cible @Import est traitée comme @Configuration au printemps
[Spring Batch] Données de la table de sortie dans un fichier CSV
Comment tester l'écran de téléchargement de fichiers avec Spring + Selenium
Java11: exécuter le code Java dans un seul fichier tel quel
Lire JSON en Java
Cycle de vie du haricot de printemps
Parse Json dans Scala
Utilisez Interceptor au printemps
Microservices dans Spring Cloud
POST JSON en Java
Triangle de sortie en Ruby
Obtenez des cookies au printemps
Sortie en multiples de 3
Authentifiez 3 paramètres ou plus au format JSON à l'aide de Spring Security
Créez une API pour envoyer et recevoir des données Json avec Spring
Chemin d'accès relatif en sortie dans le fichier .classpath généré par Gradle Eclipse
Les en-têtes de réponse peuvent ne pas être affichés correctement dans Spring Security 4.1
Configurer le résolveur en plusieurs parties pour permettre à Spring de télécharger des fichiers