Java 如何在struts2操作中忽略根JSON节点
我在struts操作中添加了这个方法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,
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。顺便说一句,避免变量使用第一个一个字母长的单词,因为将来:实际上这不是我的代码,我正在重用它,我将使用我的变量。