json - 使用 Groovy 解析 JSON 响应并根据字符数和其他条件过滤元素
问题描述
我是 Groovy 的新手,但使用它从存储在文件中的JSON响应中提取响应。
以下是 JSON 的片段:
"attachments": [
{
"type": "AttachmentText",
"text": "Line 1"
},
{
"type": "AttachmentText",
"text": "This is a different text and can be anything but always > 8 characters"
}
],
我试图根据first case is always < 8
字符中的文本而字符中的文本的条件来获取文本second case is always >8
- 没有其他方法可以区分附件元素。但是,我的代码只给了我 1 个响应。
{
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText(jsontocsv.toString())
def array1 = object.attachments
if(array1 != null && !array1.isEmpty())
{
for(def i =0; i<object.attachments.size();i++)
{
if(object.attachments[i].type=="AttachmentText" && object.attachments[i].text.length()>8) {
varaiable1 = RString.of(object.attachments[i].text.toString())
}
else{
variable2 = RString.of("Nothing here")
}
}
}
else {
variable3 = RString.of("No attachments")
}
}
我希望我variable1
会显示响应这是一个不同的文本,可以是任何内容,但总是 > 8 个字符,但我一直在这里什么都没有。
知道如何解决这个问题吗?
解决方案
也许是这样的?
def methodReturningLongText()
{
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText(jsontocsv.toString())
def variable1 = RString.of("No attachments")
def array1 = object.attachments
if(array1)
{
variable1 = RString.of("Nothing here")
for(def i =0; i<array1.size();i++)
{
if(object.attachments[i].type=="AttachmentText" && object.attachments[i].text.length()>8) {
variable1 = RString.of(object.attachments[i].text.toString());
break;
}
}
}
return variable1
}
笔记:
- 定义的方法签名
- 用默认值定义结果变量 1
- 使用 groovy-truthiness 测试
if (array1)
- 在计算返回值的所有语句中使用相同的结果变量 1
- 添加了break语句,因此在找到long值后循环将停止
- 使用默认值和预先设置“这里没有”消除了对 else 块的需要。
推荐阅读
- angular - 多组件双向绑定数据传输
- connection-string - 连接字符串可在 Mac 中使用,但不能直接在 Parallels 中使用
- php - 这是我的取消链接代码,用于从它正在工作的服务器文件夹中删除图像,但它会删除文件夹中的新闻图像
- list - 如何在不同的视图中使用 SwiftUI 中的结构内部的结构?
- php - 如何在另一个文件的另一个类中调用 php 方法?
- javascript - 制作一个按钮来截取屏幕截图并将其保存到照片库中
- ios - 使用 iOS 13.3 连接到 OpenVPN 服务器不像以前那样工作
- python - 如何在基于 django 类的视图中获取 HTTP 响应状态?
- javascript - Python sqlite3 不更新某些表而其他表得到更新
- ios - 当我尝试验证我的应用程序时,Xcode 11.3.1 给我在关键 CFBundleIcons appIconXX 错误下引用的路径中找不到图像