5

Jsonをマップ/文字列のリストにアンマーシャリングしたい(例:マップ> ...)

これが私の入力です:

{"pointsOfSale": 
{"pointOfSale":[ 
{"href":"\/pointsOfSale\/UUID.0abc2aca-7930-4c9e-9f38-8af3d0692e04", 
"model":{"href":"\/models\/modelePointOfSale", 
"modelType":{"href":"\/modelTypes\/pointOfSale"}}, 
"source":{"href":"\/sources\/TEST"}, 
"attribute":[ 
{"code":"pointOfSalePhysical","value":true}, 
{"code":"mail","value":"Mail1"}, 
{"code":"adresse","value":"address1"}]}, 
{"href":"\/pointsOfSale\/UUID.a12e7adf-652a-4197-91bf-d4785e43f09f", 
"model":{"href":"\/models\/modelePointOfSale", 
"modelType":{"href":"\/modelTypes\/pointOfSale"}}, 
"source":{"href":"\/sources\/Wikeo"}, 
"attribute":[ 
{"code":"pointOfSalePhysical","value":false}, 
{"code":"mail","value":"Mail1"}, 
{"code":"adresseMateriau","value":"Material address1"}]} 
}}

マーシャリングを解除した後、このような「何か」を実行できるようにしたいと思います。

myJsonMapped.get("pointsOfSale").get("pointOfSale").get(0).get("source").get("href").equals("\/sources\/TEST") == true 

たとえば、Gsonを使用すると、この種のデコードを実行できます。

new Gson().fromJson(json, Map.class); 

単純なBeanやプロセッサなどでこれを実行できることはわかっています...

ネイティブのJSONキャメルコンポーネント構成を使用してこれをより効率的に実行できることを知りたいだけです

編集:私はすでに次のような別のことを試しました:unmarshal()。json()...またはunmarshal()。json(JsonLibrary.Gson、Map.class)..など...成功せずに:'(

4

1 に答える 1

3

あなたはジャクソンでこのようなことをすることができます。

<dataFormats>
  <json id="jack" library="Jackson"/>
</dataFormats>

...

<route>
  <from uri="direct:test"/>
  <unmarshal ref="jack"/>
  <process ref="something"/>
</route>

または、Javaでgsonを使用します。

 from("foo:bar")
    .unmarshal().json(JsonLibrary.Gson,Map.class)
    .to("foo:baz");

動作しない場合は、エラーなどを4番目に記載してください。

于 2012-10-27T09:10:58.960 に答える