Skip to content

arthas 构建 vmtool & ognl & spring context.getBean 等命令入参支持复杂类型 JSON 转换 #127

Closed
@anjia0532

Description

@anjia0532

Vmtool Get Instance Invoke Method Field 为例,对于简单的基础类型可以直接写,但是对于自定义类型则相对麻烦些。

插件默认给 vmtool -x 3 --action getInstances --className 类 --express 'instances[0].方法(new 类())' -c classload hash

OGNL 的方式

vmtool -x 3 --action getInstances --className 类  --express '#p=new 类(),#p.setFieldA("参数A"),instances[0].方法(#p)'  -c classload hash
# 解释一下
# 定义参数 #p=new 类()
# 调用方法进行赋值 #p.setFieldA("参数A")
# 方法入参 instances[0].方法(#p)
# 多个语句之间用英文逗号隔开

Json 的方式

我个人更喜欢用这种方式

# hutool
vmtool -x 3 --action getInstances --className 类  --express 'instances[0].方法(@cn.hutool.json.JSONUtil@toBean("{\"fieldA\":\"参数A\"}",类.class))'  -c classload hash

# fastjson
vmtool -x 3 --action getInstances --className 类  --express 'instances[0].方法(@com.alibaba.fastjson.JSONObject@parseObject("{\"fieldA\":\"参数A\"}",类.class))'  -c classload hash

是否考虑再简化下操作?比如自动生成全了。人工只填写参数就行了。

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions