J'ai essayé le type d'entrée / sortie de Java Lambda ~ Stream version ~

Différents modèles peuvent être utilisés pour les types d'entrée / sortie de Java Lambda.

Dans le document officiel, il est écrit en ici.

POJO Edition a présenté comment gérer JSON à l'aide des classes POJO.

Enfin, l'édition Stream utilisant InputStream / OutputStream.

C'est un code qui a été modifié depuis l'édition précédente de POJO et qui est analysé et généré par lui-même à l'aide de Jackson.

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.List;

public class StreamFunction implements RequestStreamHandler {

    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

    @Override
    public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
        Product product = OBJECT_MAPPER.readValue(inputStream, Product.class);

        String name = product.getName();
        System.out.println(name); // orange juice

        Integer price = product.getPrice();
        System.out.println(price); // 1000

        Long releaseDate = product.getReleaseDate();
        System.out.println(releaseDate); // 1601606387939

        Double rate = product.getRate();
        System.out.println(rate); // 4.5

        List<String> rawMaterial = product.getRawMaterial();
        System.out.println(rawMaterial); // [orange, fragrance]

        Product.Size size = product.getSize();
        Integer height = size.getHeight();
        System.out.println(height); // 10

        Integer width = size.getWidth();
        System.out.println(width); // 20

        Integer depth = size.getDepth();
        System.out.println(depth); // 30

        Product response = new Product();
        response.setName("coffee");
        response.setPrice(Integer.valueOf(500));
        response.setReleaseDate(System.currentTimeMillis());
        response.setRate(Double.valueOf(4.2));
        response.setRawMaterial(Arrays.asList("coffee", "sugar"));

        Product.Size responseSize = new Product.Size();
        responseSize.setHeight(Integer.valueOf(100));
        responseSize.setWidth(Integer.valueOf(200));
        responseSize.setDepth(Integer.valueOf(300));
        response.setSize(responseSize);

        OBJECT_MAPPER.writeValue(outputStream, response);
    }
}

Une fois exécuté, le résultat est le même que celui de l'édition POJO.

{
  "name": "coffee",
  "price": 500,
  "releaseDate": 1601627790764,
  "rate": 4.2,
  "rawMaterial": [
    "coffee",
    "sugar"
  ],
  "size": {
    "height": 100,
    "width": 200,
    "depth": 300
  }
}

Je ne pense pas que ce soit beaucoup utilisé, mais lorsque vous traitez avec un énorme JSON ou lorsque vous souhaitez utiliser la bibliothèque Parser / Generator de JSON.

Lequel est le meilleur après tout

Pour les codes produit, il est recommandé d'utiliser la méthode POJO pour la maintenabilité. Si vous souhaitez simplement le déplacer rapidement et l'essayer, la méthode Map est simple.

Recommended Posts

J'ai essayé le type d'entrée / sortie de Java Lambda ~ Stream version ~
J'ai essayé le type d'entrée / sortie de Java Lambda ~ édition POJO ~
J'ai essayé le type d'entrée / sortie de Java Lambda ~ Map edition ~
J'ai essayé d'utiliser l'API Java8 Stream
J'ai essayé de résumer les expressions Java lambda
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
Flux Java8, résumé de l'expression lambda
J'ai essayé Drools (Java, InputStream)
J'ai essayé d'utiliser Java REPL
J'ai essayé node-jt400 (flux SQL)
J'ai essayé la métaprogrammation avec Java
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
À propos de Lambda, Stream, LocalDate de Java8
J'ai essayé d'interagir avec Java
J'ai essayé la communication UDP avec Java
J'ai essayé le framework Java "Quarkus"
J'ai essayé d'utiliser JWT en Java
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé d'utiliser WebAssembly Stadio (version 2018/4/17)
J'ai essayé de résumer Java 8 maintenant
J'ai essayé d'utiliser le mémo Java LocalDate
J'ai essayé d'utiliser Google HttpClient de Java
J'ai essayé d'utiliser l'API Elasticsearch en Java
J'ai essayé le mappeur d'objets de Cassandra pour Java
Java9 était inclus, j'ai donc essayé jshell.
De nos jours, les expressions Java Lambda et l'API de flux
J'ai essayé le nouveau yuan à Java
J'ai essayé d'utiliser OpenCV avec Java + Tomcat
J'ai essayé de résumer l'API Stream
J'ai essayé l'examen d'entrée de Google (non officiel) [java]
J'ai examiné l'expression lambda de Java, l'API de flux, six mois après avoir commencé Java.
Je ne me souviens pas de l'entrée / sortie du fichier texte en Java, alors je l'ai résumé.
Écrivons l'entrée / sortie de fichier Java avec NIO
J'ai essayé de mettre facilement Java sur mon Mac
J'ai essayé de faire une authentification de base avec Java
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
java j'ai essayé de casser un simple bloc
J'ai essayé de créer une compétence Alexa avec Java
J'ai essayé de casser le bloc avec java (1)
J'ai essayé d'exécuter Java dans un terminal Mac
Repenser le modèle d'expression et de conception de flux Java8 Lambda - Modèle de commande -
Essayez Progate Free Edition [Java I]