首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送Struts2响应时出现JSON编写器异常

发送Struts2响应时出现JSON编写器异常
EN

Stack Overflow用户
提问于 2013-01-30 16:25:58
回答 3查看 8.1K关注 0票数 0

我遇到了很多例外,我发现这些例外对解决我的问题没有帮助,

这就是它们

代码语言:javascript
复制
Class org.apache.struts2.json.JSONWriter can not access a member of class org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl with modifiers "public"
java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl with modifiers "public"
org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl with modifiers "public"
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl with modifiers "public"
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl with modifiers "public"
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl with modifiers "public"
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl with modifiers "public"
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl with modifiers "public"

下面是我的action类,它返回JSON

代码语言:javascript
复制
public class GetTagsAction extends ActionSupport{       
    public String execute(){

        Gson gson = new Gson();
        String tags = gson.toJson(audioTaggingService.findTagsByName(q));
        System.out.println(tags);

        return Action.SUCCESS;
    }

    public String getQ() {
        return q;
    }

    public void setQ(String q) {
        this.q = q;
    }

    public AudioTaggingService getAudioTaggingService() {
        return audioTaggingService;
    }

    public void setAudioTaggingService(AudioTaggingService audioTaggingService) {
        this.audioTaggingService = audioTaggingService;
    }

    public String getTags() {
        return tags;
    }

    public void setTags(String tags) {
        this.tags = tags;
    }

    private String q;
    private AudioTaggingService audioTaggingService;
    private String tags;
}

这是包裹

代码语言:javascript
复制
<package name="default" namespace="/" extends="json-default">
    <!--  Get AJAX Related Actions -->
    <action name="tags" class="tags">
        <result type="json" />
    </action>
</package>

我使用的是Struts2-JSON-plugin

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-30 21:02:48

错误是由于插件试图转换整个对象图的事实,而且看起来插件试图通过audioTaggingService转换您的数据库层。您需要在struts XML中指定"root“参数。

代码语言:javascript
复制
<action name="tags" class="tags">
    <result type="json">
      <param name="root">tags</param>
    </result>
</action>

并在您的操作中提供getTags()方法。

然而,我不确定这是否会有帮助。当您尝试JSON化一个已经包含JSON数据的字符串时,我不确定会发生什么。

票数 3
EN

Stack Overflow用户

发布于 2013-01-30 16:53:12

您需要在xml中编辑以下行

代码语言:javascript
复制
 <action name="tags" class="tags">

attribute class正在查找详细的类名,如com.your.package.YourAction

详细的here

票数 2
EN

Stack Overflow用户

发布于 2014-11-27 15:19:57

有时,如果其中一个JSON数据为null,则会出现此错误,在转换时不会产生错误,但在处理数据时会产生错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14599542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档