Die JSON- und Python-Dikte werden wie folgt zugeordnet:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number(real) | float |
true | True |
false | False |
null | None |
Wenn Sie JSON daher mit "json.loads ()" analysieren und mit "dynamo.put_item ()" registrieren, wird es mit dem oben genannten Typ registriert. Zu diesem Zeitpunkt wird ein Float-Typ wie folgt wütend.
Float types are not supported. Use Decimal types instead.
Python-Floats können nicht wie sie sind in DynamoDB registriert werden. Sie müssen sich stattdessen bei Decimal registrieren.
Float muss auf Dezimal abgebildet werden. Angenommen, die folgenden Daten sind registriert.
json_data
{"Timestamp": "20160323T203501.000+0900", "x": -0.279938, "y": -0.754028, "z": -0.607758 }
Fügen Sie beim Parsen von JSON parse_float = decimal.Decimal
hinzu, wie unten gezeigt.
import json
import boto3
import decimal
#...Kürzung
item = json.loads(json_data, parse_float=decimal.Decimal)
dynamo = boto3.resource('dynamodb').Table('ThisIsJustTest')
dynamo.put_item(Item = item)
Es wurde im Python-Beamten erwähnt, aber ich habe die Informationen nicht sofort erhalten, also habe ich sie als Artikel geschrieben.
https://docs.python.org/2/library/json.html#encoders-and-decoders
parse_float, if specified, will be called with the string of every JSON float to be decoded. By default, this is equivalent to float(num_str). This can be used to use another datatype or parser for JSON floats (e.g. decimal.Decimal).
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
Es war auch in der AWS-Dokumentation reibungslos. https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/gettingstartedguide/GettingStarted.Python.02.html
Die folgenden Methoden werden vorgestellt.
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/gettingstartedguide/GettingStarted.Python.03.html http://stackoverflow.com/questions/1960516/python-json-serialize-a-decimal-object
Recommended Posts