0

Ich habe eine aws Lambda-Funktion mit C# in Visual Studio 2017 erstellt und habe Probleme mit den Parametern. Ich versuche, den 'querystringparameter' zu bekommen, aber jedes Mal, wenn ich einen Parameter in meinem FunctionHandler setze, erhalte ich diesen Fehler.JsonReaderException in AWS Lambda C# Funktion

{ 
    "errorType": "JsonReaderException", 
    "errorMessage": "Unexpected character encountered while parsing value: {. Path '', line 1, position 1.", 
    "stackTrace": [ 
    "at Newtonsoft.Json.JsonTextReader.ReadStringValue(ReadType readType)", 
    "at Newtonsoft.Json.JsonTextReader.ReadAsString()", 
    "at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)", 
    "at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)", 
    "at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)", 
    "at Newtonsoft.Json.JsonSerializer.Deserialize[T](JsonReader reader)", 
    "at lambda_method(Closure , Stream , Stream , ContextInfo)" 
    ] 
} 

Das ist meine Probe FunctionHandler Code:

public string FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context) 
     { 
      var sample = GetParameters(request.QueryStringParameters, "sample"); 
      return sample; 
     } 

Was mit diesem falsch? Antworten würden sehr geschätzt werden. Vielen Dank !

UPDATE

Error Message

+0

Was ist die Eingabe, an die Sie übergeben werden das Lambda? – Kannaiyan

+0

Ich gebe einen Abfrageparameter über API Gateway. – anonymous

+0

können Sie bitte angeben, wie Sie die Parameter übergeben, ich meine das Format der JSON-Werte – msoliman

Antwort

1

Die Ausnahme bedeutet, dass Sie nicht Ihre Parameter als gültiges JSON Format sind vorbei. Bitte stellen Sie sicher, dass Sie Ihren Parameter in einem string-quotierten Format übergeben.

public string myFunctionHandler(string param, ILambdaContext context){ 
.... 
} 

Parameter Passing (in einem String zitiert Format) sollten wie die Suche werden:

"{ \"param\": \"value\" }" 

Wenn Sie ein Objekt haben:

public string myFunctionHandler(JObject param, ILambdaContext context) { 
... 
} 

In diesem Fall können Sie es passieren wie dies:

{ "param": "value" } 
+0

Wie wäre es, wenn ich es als Abfrageparameter übergeben möchte, aber nicht über AWS API Gateway? Wie, http://api.com/v1?param=sample ... – anonymous

+0

@anonymous Eine solche Abfrage Parameter Mapping kann wie erwähnt konfiguriert werden http://docs.aws.amazon.com/apiateway/latest/developerguide/how- to-method-settings-execution-console.html –