@eric_jfire 你好,想跟你请教个问题:
最近看到您新出的codejson框架, 性能目前果然是傲视群雄呀。。 准备在项目中应用,但是出现了一些问题!我的项目是采用jfinal, 在用codejson输出jfinal model时出错!
java.lang.IllegalAccessError: tried to access class java.util.HashMap$Node from class JsonWriter_Node_37709549281918 at JsonWriter_Node_37709549281918.write(JsonWriter_Node_37709549281918.java) at link.jfire.codejson.function.WriterContext.write(WriterContext.java:103) at JsonWriter_PiracyInfo_37709515503292.write(JsonWriter_PiracyInfo_37709515503292.java) at link.jfire.codejson.function.WriterContext.write(WriterContext.java:103) at link.jfire.codejson.function.impl.write.extra.ArrayListWriter.write(ArrayListWriter.java:28) at link.jfire.codejson.function.WriterContext.write(WriterContext.java:103) at link.jfire.codejson.JsonTool.write(JsonTool.java:28)
public abstract class Model<M extends Model> implements Serializable { private static final long serialVersionUID = -990334519496260591L; /** * Attributes of this model */ private Map<String, Object> attrs = getAttrsMap(); // getConfig().containerFactory.getAttrsMap(); // new HashMap<String, Object>(); private Map<String, Object> getAttrsMap() { Config config = getConfig(); if (config == null) return DbKit.brokenConfig.containerFactory.getAttrsMap(); return config.containerFactory.getAttrsMap(); }
@ModelSign public class PiracyInfo extends BaseModel<PiracyInfo> { public static PiracyInfo dao = new PiracyInfo(); }
能不能贴出更完善一些的代码?
codejson输出采用的是属性的get方法。也就是说要输出的属性至少要有一个无参的get方法才能输出。但是我在你的代码中似乎没有看到?
回复 @三千水军保档:可能我没看的太明白。是不是这个类中还有其他的属性。那这样的话,在输出策略中,使用writeStratege.addIgnoreField("com.XX.fieldName")这样的方式可以忽略指定的属性即可。注意该属性是标准get方法中抽离出来的。回复 @eric_jfire:嗯嗯,好的,谢谢呀!如果说我这里只想输出Model里面的attrs这个集合!codejson策略方式能实现吗?回复 @三千水军保档:是的。codejson输出采用的符合JavaBean规范的get方法。也即是说,第一无参,第二访问类型为public。如果是protected按理来说是直接忽略的,可能是我的bug。我回头再检查下。感谢您的回答!请看楼下代码!Jfinal将查询结果集封装到一个Map集合里面,但是只提供了一个protected的get方法供子类使用,所以codeJson没权限访问Map!不知道我理解的对不对?BaseModel:
PiracyInfoServiceImpl:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。