0

Jacksonを使用してAmazonCloudSearchに接続します。AmazonCloudSearchは、SDF形式でデータを取り込みます。次に例を示します。

[ {
  "type" : "add",
  "id" : "images_to_search_csv_1",
  "version" : 1336526759,
  "lang" : "en",
  "fields" : {
    "content" : "http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Timba%2B1.jpg/220px-Timba%2B1.jpg",
    "title" : "Simba",
    "source" : "wikipedia",
    "description" : "Simba the wolf dog.",
    "type" : "Image"
  }
}, {
  "type" : "add",
  "id" : "images_to_search_csv_2",
  "version" : 1336526760,
  "lang" : "en",
  "fields" : {
    "content" : "http://www.wolfzone1.com/photos/sedona-01d%20copy.jpg",
    "title" : "Wolf",
    "source" : "Wolf Zone",
    "description" : "Another wolf.",
    "type" : "Image"
  }
} ]

フィールドは、送信するエンティティのフィールドであることに注意してください。つまり、そのエンティティをSDFクラスにバインドするだけで、エンティティとそのフィールドを取得できますが、ファイルの構造は異なります。ジャクソンにやらせるのではなく、これを手動で出力するコードを書くべきですか?

4

1 に答える 1

0

カスタムデシリアライザー/シリアライザーを記述して、その部分のハンドラーのみを手動で書き込むことができます。登録は、タイプごとにグローバルに行うことも、プロパティごとに行うこともできます。このようにして、明示的な作業の量をかなり減らすことができます。多段階処理を使用することもできます。最初に汎用的なもの(Map、JsonNode)にバインドし、構造を少し変換してから、POJOとの間で変換します( `ObjectMapper.convertValue()')。

于 2012-05-10T16:34:08.037 に答える