Java 如何在struts2操作中忽略根JSON节点

Java 如何在struts2操作中忽略根JSON节点,java,json,struts2,struts2-json-plugin,struts-action,Java,Json,Struts2,Struts2 Json Plugin,Struts Action,我在struts操作中添加了这个方法 public String execute() { long start = System.currentTimeMillis(); simDetails = new SIMDetails(); return GET_SIM_DETAILS; } 并在struts配置文件中添加了以下操作 符合事实的 辛普森:细节* 然后我得到了下面的JSON响应 { "simDetails": { "void": null,

我在struts操作中添加了这个方法

public String execute() {
    long start = System.currentTimeMillis();
    simDetails = new SIMDetails();
    return GET_SIM_DETAILS;
}
并在struts配置文件中添加了以下操作

符合事实的 辛普森:细节* 然后我得到了下面的JSON响应

{
    "simDetails": {
        "void": null,
        "ban": null,
        "currentTariff": null,
        "currentTariffDescription": null,
        "defaultTariff": null,
        "defaultTariffDescription": null,
        "imsi": null,
        "packageItemId": null,
        "simSerialNumber": null,
        "simStatus": null,
        "simStatusCC": null,
        "status": null,
        "subscriberNumber": null,
        "subsidaryCode": null
    }
}
但我需要的是这个回答而不是上面的

{
    "void": null,
    "ban": null,
    "currentTariff": null,
    "currentTariffDescription": null,
    "defaultTariff": null,
    "defaultTariffDescription": null,
    "imsi": null,
    "packageItemId": null,
    "simSerialNumber": null,
    "simStatus": null,
    "simStatusCC": null,
    "status": null,
    "subscriberNumber": null,
    "subsidaryCode": null
}

要获得所需的响应,请将上述字段添加到我的操作类中。

为了避免同样的问题,我通常使用以下struts.xml返回JSON,而不是JSON返回类型:

                <result name="success" type="stream">
                    <param name="contentType">text/html</param>
                    <param name="inputName">inputStream</param>
                </result>
我在action类中保留了一个类型为“inputStream”的变量“inputStream”,在execute方法中,我手动将JSON分配给“inputStream”。这允许我完全按照自己的需要定制JSON,而这正是“inputStream”将返回的结果

希望有帮助

您可以使用文档部分中指定的根属性:

使用根attributeOGNL表达式指定要序列化的根对象

就你而言:

符合事实的 simDetails
附言:也许值得一读。在这个问题的另一个答案中,你也可以看到@IntelliData建议的流技术。

如果你使用simDetails并删除IncludeProperty,你会得到什么?附言:你有相同的化身,它可以按要求工作。非常感谢,你可以添加它作为答案来接受它如果我使用dLink它返回空值,并且有效,我不希望所有属性都作为响应,为什么会这样,有任何建议,请;这是因为变量的第一个单词只有一个字母长,Eclipse生成getter getdLink而不是getdLink,这是Struts2所需要的。只需手动更改公共字符串getDLink{return dLink;}中的getter即可。哦,考虑一下这个问题的答案,谢谢ShanalaMaT.Ty先生,这解决了我的问题,但是对于我的AJAX请求,但是另一个做同样的事情现在不工作。哦,我对你的答案投了赞成票。现在不起作用的事情可能是在JSP中使用了错误的getter/setter,你需要将它们更改为正确的语法,因为你已经更改了getter和setter。顺便说一句,避免变量使用第一个一个字母长的单词,因为将来:实际上这不是我的代码,我正在重用它,我将使用我的变量。