0

J'ai créé une fonction aws lambda en utilisant C# dans Visual Studio 2017 et j'ai des problèmes avec les paramètres. J'essaye d'obtenir le 'paramètre de querystring' mais chaque fois que je mets un paramètre dans mon FunctionHandler j'obtiens cette erreur.JsonReaderException dans AWS Lambda C# Fonction

{ 
    "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)" 
    ] 
} 

Ceci est mon exemple de code FunctionHandler:

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

Quel est le problème avec ça? Les réponses seraient très appréciées. Je vous remercie !

MISE À JOUR

Error Message

+0

Quelle est l'entrée que vous passez à le lambda? – Kannaiyan

+0

Je transmets un paramètre de requête via API Gateway. – anonymous

+0

pouvez-vous s'il vous plaît fournir comment vous passez les paramètres, je veux dire le format des valeurs JSON – msoliman

Répondre

1

L'exception signifie que vous n'êtes pas de passer votre paramètre en tant que format JSON valide. Assurez-vous de transmettre votre paramètre dans un format de chaîne de caractères.

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

passage de paramètre (dans une chaîne le format cité) devrait être à la recherche comme:

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

Si vous avez un objet:

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

Dans ce cas, vous pouvez passer comme ceci:

{ "param": "value" } 
+0

Que diriez-vous si je veux passer en tant que paramètre de requête, mais pas via AWS API Gateway? Comme, http://api.com/v1?param=sample ... – anonymous

+0

@anonymous Un tel mappage de paramètre de requête peut être configuré comme mentionné http://docs.aws.amazon.com/apigateway/latest/developerguide/how- to-method-settings-execution-console.html –