私はAWS LambdaをJava 8の関数で使用しています。ラムダには組み込みのJacksonシリアライザがあります。メソッドがオブジェクトを返すと、オブジェクトはJSON表現にシリアル化されます。Jackson JsonNodeシリアル化
私は次のプロパティで構成されていonject:私は簡単にするために、クラスのすべての残りの部分を省略しましたが、それはゲッター/セッターなど
を持ってprivate String name;
private JsonNode model;
private JsonNode field;
を
通常、これをネイティブアプリケーションで実行すると、完全に機能します。
JsonNode
ツリー構造はJSONとしてレンダリングされます。たとえば:{ "name": "example", "model": { "key": "ipAddress", "type": "input", "templateOptions": { "label": "IP", "placeholder": "Something", "description": "The IP address.", "required": true } }, "field": { "key": "pro", "type": "input", "templateOptions": { "label": "Pro", "placeholder": "Something", "description": "Pro Example", "required": false } } }
は、しかし、いくつかの未知の理由で、私はラムダでこれを実行して、実際のJsonNodeオブジェクト自体は(ないツリーが、ラッパーオブジェクト)がシリアライズさです。ですから、私は代わりにこれを得ています:
{ "name": "example", "model": { "nodeType": "NULL", "array": false, "null": true, "valueNode": true, "containerNode": false, "missingNode": false, "object": false, "pojo": false, "number": false, "integralNumber": false, "floatingPointNumber": false, "short": false, "int": false, "long": false, "float": false, "double": false, "bigDecimal": false, "bigInteger": false, "textual": false, "boolean": false, "binary": false }, "fields": { "nodeType": "ARRAY", "array": true, "null": false, "valueNode": false, "containerNode": true, "missingNode": false, "object": false, "pojo": false, "number": false, "integralNumber": false, "floatingPointNumber": false, "short": false, "int": false, "long": false, "float": false, "double": false, "bigDecimal": false, "bigInteger": false, "textual": false, "boolean": false, "binary": false }, "schedule": "0 0/1 * 1/1 * ? *" }
これはなぜ起こっているのか、解決策や回避策の提案はありますか?
UPDATE:
model
とfield
は動的であり、実行時に提供されているので、私は特にJsonNodeを使用しています。だから私は前もって構造を知っていません。
私はできません!オブジェクトが動的なので、私は特にJsonNodeを使用しています。 – tarka
あなたの質問に言及する必要があります。 – rmlan
問題は、 'Object'がJSON文字列としてシステムに到着し、javaオブジェクトに変換されなければならないことです。だから私が 'Object'として定義したとしても、まだ' JsonNode'です。 – tarka