You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用IntelliJ SSR从初始化表达式提取结构化信息?

能否用IntelliJ SSR从构造函数调用中提取信息并转换为结构化格式?

示例代码

public enum Model {
   TOYOTA, 
   FORD
}

public enum Dealership {
   TOYOTA_GRAND_PRIX(Model.TOYOTA, Set.of("LAND-CRUISER", "AVENSIS")),
   FORD_DELUXE(Model.FORD, Set.of("FOCUS"));

   private final Model model;
   private final Set<String> brands;
}

期望结构化结果

[
 {
  "model": "TOYOTA", 
  "brands": ["LAND-CRUISER", "AVENSIS"]
 }, 
 {
  "model": "FORD", 
  "brands": ["FOCUS"]
 }
]

实现方案

完全可以用IntelliJ的**结构搜索替换(SSR)**实现这个需求,具体步骤如下:

  • 打开结构搜索对话框:使用快捷键Ctrl+Shift+S,或通过菜单Edit > Find > Search Structurally打开。

  • 编写搜索模板,匹配枚举常量的构造调用:

    $ENUM_CONSTANT$($MODEL$, Set.of($BRANDS$));
    

    为变量设置约束:

    • $ENUM_CONSTANT$:指定类型为Dealership枚举的常量
    • $MODEL$:匹配Model枚举实例,后续提取其名称
    • $BRANDS$:匹配多个字符串字面量参数
  • 编写替换模板并配置脚本处理:
    切换到「Replace」标签页,使用JSON片段作为替换模板,同时用Groovy脚本处理变量转换:

    {
     "model": "$MODEL_NAME$",
     "brands": [$BRANDS_LIST$]
    }
    

    脚本映射规则:

    • $MODEL_NAME$:通过$MODEL$.name()提取枚举实例的名称(如Model.TOYOTA转为"TOYOTA")
    • $BRANDS_LIST$:将$BRANDS$匹配到的多个字符串字面量转为带引号的逗号分隔列表(如"LAND-CRUISER", "AVENSIS")
  • 生成最终结果:执行搜索替换后,将所有生成的JSON片段拼接,包裹上数组括号即可得到目标结构化结果。如果需要生成XML,只需将替换模板改为对应XML格式片段即可。

内容的提问来源于stack exchange,提问作者62mkv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:39:51