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.
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