2

次のような JSON マップがあります。

{ "element":"value","element2":"value2",...}

キー文字列と値文字列の両方。autobean で読み込もうとすると、奇妙な例外が発生します。それは簡単なはずですよね?

私が得ているエラーは次のとおりです。

[ERROR] [project_name] - The java.util.Map parameterization is not simple, but the getConf method does not provide a delegate

私はそのように地図を読みました:

final String jsObject = GeneralContextNativeReader.read("globalConf");
GlobalConfFactory globalConfFactory = GWT.create(GlobalConfFactory.class);
Map<String, String> globalConf = AutoBeanCodex.decode(globalConfFactory, Map.class, jsObject).as();

ファクトリは次のように定義されます。

public interface GlobalConfFactory extends AutoBeanFactory {
    AutoBean<Map<String, String>> globalConf();
}

それの何が問題なのですか?

4

2 に答える 2

1

私の知る限りMapsListsおよびその他の単純でないオブジェクトは参照型のみであり、値型ではありません。詳しくはこちらをご覧ください。
コードを次のように変更すると、機能するはずです。

public interface Data {
   public Map<String,String>> getGlobalConf();
}

public interface DataFactory extends AutoBeanFactory {
   AutoBean<Data> getData();
}

final String jsObject = GeneralContextNativeReader.read("globalConf");
DataFactory dataFactory = GWT.create(DataFactory.class);
Data data = AutoBeanCodex.decode(dataFactory, Data.class, jsObject).as();
Map<String, String> globalConf = data.getGlobalConf();

json 文字列は次のようにする必要があります。

{"globalConf":{ "element":"value","element2":"value2",...}}
于 2012-08-23T08:39:22.297 に答える
0

これは、AutoBean インターフェースに静的メソッド (Java 8 の新機能) が含まれている場合にも発生する可能性があります。

于 2015-08-25T18:11:16.380 に答える