2016-07-08 8 views
5

लैम्ब्डा के साथ पहले प्रयास करना। बनाया गया कोड, तैनात, परीक्षण काम करता है, लेकिन:एडब्ल्यूएस, लैम्ब्डा, जावा, पीओजेओ, कस्टम जेसन संपत्ति का नाम

public String handleRequest(MyType inObj, Context context) { 
    // logging inObj here 
} 

POJO वर्ग

public class MyType { 
    String prop; 
    String otherProp; 
} 

जब लागू, मैं पेलोड निम्नलिखित दे:

{ "prop": "val1", "other_prop": "val2" } 

आप देख सकते हैं, मैं देना चाहता हूँ snake_case में जेसन। जब लैम्ब्डा लॉग, मैं देख सकता हूँ कि

inObj.prop == "VAL1"

inObj.otherProp == "अशक्त"।

जब मैं जेएसओएन को सांप_case से camelCase में बदलता हूं, तो यह ठीक से deserialized और अन्यProp == "val2" है। मैंने फ़ील्ड में @ जेसनप्रोपर्टी ("अन्य_प्रॉप") जोड़ने की कोशिश की, गेटर और सेटर (ऊंटकेस में) जोड़कर और उन लोगों को @ जेसनप्रोपर्टी जोड़ना (यादृच्छिक अनुमान), लेकिन कुछ भी नहीं बदला।

प्रश्न: मैं माईटाइप कक्षा का वर्णन कैसे कर सकता हूं ताकि यह सांप_case से camelCase से AWS Lambda द्वारा उचित रूप से deserialized है?

उत्तर

5

टिप्पणी देखें http://docs.aws.amazon.com/lambda/latest/dg/java-programming-model-req-resp.html

नोट

में आप चौखटे ऐसे टिप्पणी के रूप में क्रमांकन के किसी भी अन्य सुविधाओं पर निर्भर नहीं करना चाहिए। यदि आपको क्रमबद्धता व्यवहार को कस्टमाइज़ करने की आवश्यकता है, तो आप अपने स्वयं क्रमबद्धरण का उपयोग करने के लिए कच्चे बाइट स्ट्रीम का उपयोग कर सकते हैं।

तो आपको एनोटेशन का उपयोग करने के लिए इनपुटस्ट्रीम से ऑब्जेक्ट्स को क्रमबद्ध करने की आवश्यकता है।

http://docs.aws.amazon.com/lambda/latest/dg/java-handler-io-type-stream.html

package example; 

import java.io.InputStream; 
import java.io.OutputStream; 
import com.amazonaws.services.lambda.runtime.RequestStreamHandler; 
import com.amazonaws.services.lambda.runtime.Context; 

public class Hello implements RequestStreamHandler { 
    public static void handler(InputStream inputStream, OutputStream outputStream, Context context) throws IOException { 
     // TODO Serialize Object from inputStream 
    } 
} 
+0

यहाँ प्रारंभ करें वास्तव में मुझे क्या चाहिए! – nterry

संबंधित मुद्दे