The documentation表示可以设置includeProperties参数,其行为如下:
可以将以逗号分隔的正则表达式列表传递给 JSON结果限制将序列化哪些属性。只要 将包含与任何这些正则表达式匹配的属性 在序列化输出中。
但是,根据我自己的测试,情况似乎并非如此。无论如何,它似乎不像人们所期望的那样支持完整的正则表达式语法(即可以与java.util.regex.Pattern一起使用的完整表达式集。)
举一个简单的例子,我们可能想要使用贪婪的可选量词("?")和一个组。为了使事情具体化,这种模式:^(items\\[\\d+\\]\\.)?userName$
不起作用;它被忽略,您的includeProperties
最终成为null
。
但是,如果您只使用^items\\[\\d+\\]\\.userName$
,那么它可以正常工作(模式被识别并添加)。查看org.apache.struts2.json.JSONUtil
源代码显示,为处理模式而编写了大量自定义代码。
JSON插件文档中未提及仅支持正则表达式的特殊子集。这个插件支持或不支持哪些类型的表达式的故事是什么?