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

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.

Tout d'abord, à partir de la méthode Map.

Il s'agit du JSON d'entrée à transmettre à la fonction Lambda.

{
    "name": "orange juice",
    "price": 1000,
    "releaseDate": 1601606387939,
    "rate": 4.5,
    "rawMaterial": ["orange", "fragrance"],
    "size": {
        "height": 10,
        "width": 20,
        "depth": 30
    }
}

Le code ci-dessous traite cette entrée JSON comme une carte, l'écrit dans la sortie standard et utilise également Map pour générer un autre JSON.

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MapFunction implements RequestHandler<Map<String, Object>, Map<String, Object>> {
    @Override
    public Map<String, Object> handleRequest(Map<String, Object> event, Context context) {
        String name = (String) event.get("name");
        System.out.println(name); // orange juice

        Integer price = (Integer) event.get("price");
        System.out.println(price); // 1000

        Long releaseDate = (Long) event.get("releaseDate");
        System.out.println(releaseDate); // 1601606387939

        Double rate = (Double) event.get("rate");
        System.out.println(rate); // 4.5

        List<String> rawMaterial = (List<String>) event.get("rawMaterial");
        System.out.println(rawMaterial); // [orange, fragrance]

        Map<String, Integer> size = (Map<String, Integer>) event.get("size");
        Integer height = size.get("height");
        System.out.println(height); // 10

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

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

        Map<String, Object> response = new HashMap<>();
        response.put("name", "coffee");
        response.put("price", Integer.valueOf(500));
        response.put("releaseDate", System.currentTimeMillis());
        response.put("rate", Double.valueOf(4.2));
        response.put("rawMaterial", Arrays.asList("coffee", "sugar"));

        Map<String, Integer> responseSize = new HashMap<>();
        responseSize.put("height", Integer.valueOf(100));
        responseSize.put("width", Integer.valueOf(200));
        responseSize.put("depth", Integer.valueOf(300));
        response.put("size", responseSize);

        return response;
    }
}

Chaque valeur est convertie en String, Integer, Long, Double selon le type JSON. Un tableau est converti en liste et un tableau associatif est converti en carte.

Lorsque j'exécute cette fonction Lambda, ce JSON est généré.

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

Puisque j'utilise HashMap, la commande n'est pas en ordre. Si vous utilisez TreeMap au lieu de HashMap, par exemple, l'ordre sera conservé. Cependant, il est souhaitable que le destinataire de ce JSON l'implémente d'une manière indépendante de l'ordre.

Comme vous pouvez le voir, Java Lambda vous permet de travailler avec JSON en utilisant le type Map. Vous pouvez écrire du code sans ajouter plus de classes, mais vous vous retrouverez avec une tempête de cast et ce n'est pas de type sécurisé. Dans le prochain article, je présenterai une méthode POJO capable de résoudre ce problème.

J'ai essayé le type d'entrée / sortie de Java Lambda ~ édition POJO ~ https://qiita.com/kazfuku/items/095b4fb9c37638f57457

Recommended Posts

J'ai essayé le type d'entrée / sortie de Java Lambda ~ Map edition ~
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 ~ Stream version ~
[Java] Faites attention au type de clé de la carte
J'ai essayé de résumer les bases de kotlin et java
J'ai essayé le framework Java "Quarkus"
L'origine des expressions Java lambda
J'ai essayé d'utiliser Google HttpClient de Java
J'ai essayé de résumer les méthodes de Java String et StringBuilder
J'ai essayé de résumer les expressions Java lambda
[jour: 5] J'ai résumé les bases de Java
Sortie du livre "Introduction à Java"
J'ai essayé de visualiser l'accès de Lambda → Athena avec AWS X-Ray
J'ai comparé les caractéristiques de Java et .NET
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
J'ai essayé d'utiliser le profileur d'IntelliJ IDEA
Essayez Progate Free Edition [Java I]
Je ne me souviens pas de l'entrée / sortie du fichier texte en Java, alors je l'ai résumé.
J'ai essayé d'utiliser la fonction Server Push de Servlet 4.0
05. J'ai essayé de supprimer la source de Spring Boot
Utiliser des expressions Java lambda en dehors de l'API Stream
J'ai essayé de réduire la capacité de Spring Boot
J'ai essayé le nouveau profileur de fonctionnalités d'IntelliJ IDEA 2019.2.
J'ai résumé les types et les bases des exceptions Java
récapitulatif des entrées / sorties standard de vérification des compétences paiza [édition Java]
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
J'ai fini de regarder les roses de Versailles, alors j'ai essayé de reproduire la chanson de fin en Java
Il y a une dizaine d'années, un utilisateur de Java a tenté d'étudier les fonctions de Java8 (édition de style Lambda).
Je veux renvoyer un type différent de l'élément d'entrée avec Java8 StreamAPI Reduce ()
[Note] Sortie Java de la somme des éléments pairs et impairs
Je n'ai pas vraiment compris le comportement de Java Scanner et .nextLine ()
[JDBC] J'ai essayé d'accéder à la base de données SQLite3 depuis Java.
Enfant orienté objet!? J'ai essayé le Deep Learning avec Java (édition d'essai)
Je souhaite modifier le paramètre de sortie du journal de UtilLoggingJdbcLogger
J'ai essayé JAX-RS et pris note de la procédure
[Java] Pour connaître les informations de type des paramètres de type à l'exécution
J'ai brièvement résumé la grammaire de base de Ruby
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
J'ai créé un client RESAS-API en Java
J'ai essayé d'utiliser la bibliothèque CameraX avec Android Java Fragment
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
[Java] J'ai réfléchi aux mérites et aux utilisations de "interface"
J'ai essayé Drools (Java, InputStream)
J'ai essayé d'utiliser Java REPL
J'ai essayé le problème FizzBuzz
[Java] J'ai essayé d'implémenter la combinaison.
J'ai étudié le constructeur (java)
J'ai essayé la métaprogrammation avec Java
Entrée dans la console Java
[Java] Je me sentais comme un débutant en java. "Pourquoi le premier caractère est-il en majuscule uniquement dans le type String?" J'ai fait face au type String.
J'ai essayé de résoudre le problème de la "sélection multi-étapes" avec Ruby
Examiner les informations système de l'environnement d'exploitation AWS Lambda en Java
J'ai essayé de résumer ce qui était demandé lors de l'édition site-java-