簡體   English   中英

AWS Lambda JSON到DynamoDB KeyError序列化JSON

[英]AWS Lambda JSON to DynamoDB KeyError Serializing JSON

我正在AWS上設置lambda函數,並想將JSON插入DynamoDB(NoSQL)。 我認為這與JSON(decimal_serializer)的序列化有關,但我可能錯了。 感謝幫助!

序列化此數據時出現以下錯誤:

錯誤MSG:

{
  "errorMessage": "'male_confidence'",
  "errorType": "KeyError"
}

JSON數據插入:

{
  "device_id": "abc876",
  "recorded_at": "1496136878",
  "customers": [
    {
      "male_confidence": "0.2",
      "female_confidence": "0.8"
    },
    {
      "male_confidence:": "0.1",
      "female_confidence": "0.9"
    }
  ]
}

Lambda函數處理程序

import boto3
import json

def lambda_handler(event, context):
    # TODO implement
    client = boto3.client('dynamodb')
    for customer in event['customers']:
        client.put_item(TableName="cv_data_1", Item={'device_id': {"S": event['device_id']}, 'male_confindence': {"N": customer['male_confidence']}, 'female_confidence': {"N": customer['female_confidence']}, "timestamp":{ "N": event['recorded_at']}})
    print('Successfully processed %s items.' % str(len(event['customers'])))

AWS輸出日志錯誤(詳細信息):

During handling of the above exception, another exception occurred:

09:23:38
Traceback (most recent call last):

09:23:38
File "/var/runtime/awslambda/bootstrap.py", line 463, in <module>

09:23:38
main()

09:23:38
File "/var/runtime/awslambda/bootstrap.py", line 459, in main

09:23:38
handle_event_request(request_handler, invokeid, event_body, context_objs, invoked_function_arn)

09:23:38
File "/var/runtime/awslambda/bootstrap.py", line 240, in handle_event_request

09:23:38
result = to_json(result)

09:23:38
File "/var/runtime/awslambda/bootstrap.py", line 215, in to_json

09:23:38
return json.dumps(obj, default=decimal_serializer)

09:23:38
File "/var/lang/lib/python3.6/json/__init__.py", line 238, in dumps

09:23:38
**kw).encode(obj)

09:23:38
File "/var/lang/lib/python3.6/json/encoder.py", line 199, in encode

09:23:38
chunks = self.iterencode(o, _one_shot=True)

09:23:38
File "/var/lang/lib/python3.6/json/encoder.py", line 257, in iterencode

09:23:38
return _iterencode(o, 0)

09:23:38
File "/var/runtime/awslambda/bootstrap.py", line 104, in decimal_serializer

09:23:38
raise TypeError(repr(o) + " is not JSON serializable")

09:23:38
TypeError: <FrameSummary file /var/task/lambda_function.py, line 8 in lambda_handler> is not JSON serializable

錯別字:

  "male_confidence:": "0.1",
  "female_confidence": "0.9"

“ male_confidence:”

male_confidence:后有錯別字,請注意額外的: 嘗試這個

{
  "device_id": "abc876",
  "recorded_at": "1496136878",
  "customers": [
    {
      "male_confidence": "0.2",
      "female_confidence": "0.8"
    },
    {
      "male_confidence": "0.1",
      "female_confidence": "0.9"
    }
  ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM