我有一个如下的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();
}这有什么错呢?
发布于 2012-08-23 16:39:22
AFAIK、Maps和Lists等非简单对象只能是引用类型,不能是值类型。有关更多详细信息,请参阅here。
将代码更改为以下内容将使其正常工作:
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",...}}发布于 2015-08-26 02:11:16
如果您的AutoBean接口包含静态方法(Java8中的新方法),也会发生这种情况。
https://stackoverflow.com/questions/12076550
复制相似问题