3

JSONにシリアル化したいオブジェクトがあります。このオブジェクトは、特定のオブジェクトのリストを含むマップです。これはそれに似ています:

Map<String, List<Object>> map = new Map<String, List<Object>>();

FlexJSONを使用しています。でしか作業できませんflexjson.JSONSerializer。私の試みがあります:

JSONSerializer jsonSerializer = new JSONSerializer();
//        jsonSerializer.include("map");
//        jsonSerializer.include("map.myList.object");
jsonSerializer.transform(new MapTransformer(), "map");
jsonSerializer.exclude("*.class");

ご覧のとおり、私は今Transformerクラスで試していますが、成功していません。たとえば、私List<Object>の名前が自分のものである場合、コメントされた行は、私が推測するように機能しますmyList。しかし、それはvalues私の地図のものであるため、自分の名前を持っていません。

FlexJSONを使用してそのようなオブジェクトをJSONにシリアル化するにはどうすればよいですか?

4

2 に答える 2

4

Quoiは正しいです、そしておそらくあなたが使いたい答えです。ただし、それがどのように機能するかについてさらに学ぶことができるように、これを行うことができます。

new JSONSerializer().include("values.values").serialize( myMap );

マップとリストはコンテナであり、その中に含まれる要素に対して特別な表現があります。コンテナの値のパスについて話したい場合は、パスで「values」式を使用します。マップの2つの特殊な表現「キー」と「値」。他のコレクションには「値」があります。

別のオプションは、次のようなワイルドカードを使用することです。

   new JSONSerializer().include("values.*").serialize( myMap );

クラスプロパティを除外するためにQuoiの回答で使用されているワイルドカードも表示されます。

于 2012-09-25T18:20:55.247 に答える
3

試す

String jsonString = new JSONSerializer().exclude("*.class").deepSerialize(map);

deepSerializeメソッドは、ターゲットインスタンスのディープシリアル化を実行します。デフォルトではすべてのコレクション、マップ、配列が含まれるため、注釈によって除外されているものを含める場合を除いて、インクルードは無視されます。

于 2012-09-25T12:19:48.880 に答える