Groovy脚本格式化JSON

2020-08-14 01:00发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好专家

我有以下格式的JSON有效负载...

 {
     "根": {
         "团队":[
             {
                 " VisitFrequencyPerYear":" 0",
                 " UPI":" 422511",
                 " complete":" false"
             },
             {
                 " VisitFrequencyPerYear":" 0",
                 " UPI":" 421802",
                 " complete":" false"
             }
         ]
     }
 }
 

但是我需要以下格式:

 [
             {
                 " VisitFrequencyPerYear":" 0",
                 " UPI":" 422511",
                 " complete":" false"
             },
             {
                 " VisitFrequencyPerYear":" 0",
                 " UPI":" 421802",
                 " complete":" false"
             }
  ]
 

为此,我使用了以下Groovy脚本:

导入com.sap.gateway.ip.core.customdev.util.Message;
 导入java.util.HashMap;

 def消息processData(消息消息){
    
     def主体= message.getBody();
     body = body.substring(body.indexOf('\ n')+ 19);
  
     def json_to_str = body.substring(1,body.length()-3);
     message.setBody(json_to_str);
    
     返回消息;
 }

 

但是我收到如下错误消息:

第7行错误
 ***
 org.codehaus.groovy.runtime.InvokerInvocationException:groovy.lang.MissingMethodException:方法的无签名:java.io.ByteArrayInputStream.indexOf()适用于参数类型:(String)值:[
 ]
 可能的解决方案:inject(groovy.lang.Closure),findIndexOf(groovy.lang.Closure)
     在com.groovyide.ExecutorService $ 1.run(ExecutorService.java:84)

 

有人可以建议我在这里做错了吗?

感谢您的支持。

此致

Anirban Mallick

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好专家

我有以下格式的JSON有效负载...

 {
     "根": {
         "团队":[
             {
                 " VisitFrequencyPerYear":" 0",
                 " UPI":" 422511",
                 " complete":" false"
             },
             {
                 " VisitFrequencyPerYear":" 0",
                 " UPI":" 421802",
                 " complete":" false"
             }
         ]
     }
 }
 

但是我需要以下格式:

 [
             {
                 " VisitFrequencyPerYear":" 0",
                 " UPI":" 422511",
                 " complete":" false"
             },
             {
                 " VisitFrequencyPerYear":" 0",
                 " UPI":" 421802",
                 " complete":" false"
             }
  ]
 

为此,我使用了以下Groovy脚本:

导入com.sap.gateway.ip.core.customdev.util.Message;
 导入java.util.HashMap;

 def消息processData(消息消息){
    
     def主体= message.getBody();
     body = body.substring(body.indexOf('\ n')+ 19);
  
     def json_to_str = body.substring(1,body.length()-3);
     message.setBody(json_to_str);
    
     返回消息;
 }

 

但是我收到如下错误消息:

第7行错误
 ***
 org.codehaus.groovy.runtime.InvokerInvocationException:groovy.lang.MissingMethodException:方法的无签名:java.io.ByteArrayInputStream.indexOf()适用于参数类型:(String)值:[
 ]
 可能的解决方案:inject(groovy.lang.Closure),findIndexOf(groovy.lang.Closure)
     在com.groovyide.ExecutorService $ 1.run(ExecutorService.java:84)

 

有人可以建议我在这里做错了吗?

感谢您的支持。

此致

Anirban Mallick

付费偷看设置
发送
4条回答
haha101010
1楼 · 2020-08-14 02:01.采纳回答

你好Anirban,

在下面的"瑜伽回复"中添加需要做的所有猜测。

导入com.sap.gateway.ip.core.customdev.util.Message
 导入groovy.json.JsonBuilder
 导入groovy.json.JsonSlurper

 def消息processData(消息消息){
 def json = message.getBody(java.lang.String)
 def jsonSlurper =新的JsonSlurper()
 def对象= jsonSlurper.parseText(json)
 
 def builder =新的JsonBuilder()
 生成器object.root.teams.each {
      项目-> if(item.complete =='false'){
              item.remove('完成')
             }
     }
 message.setBody(builder.toPrettyString())
 返回消息;
 } 

致谢,

Sriprasad Shivaram Bhat

Nir深蓝
2楼-- · 2020-08-14 01:49

谢谢你们两个 Yogananda Muthaiah Sriprasad Shivaram Bhat

非常感谢您的帮助。

此致

Anirban

xfwsx85
3楼-- · 2020-08-14 01:54