使用 Groovy 解析 JSON 响应并根据字符数和其他条件过滤元素
Parsing JSON response using Groovy and filtering for an element based on character count & another condition
我是 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
- 在
if (array1)
中使用了groovy-真实性测试
- 在所有计算 return 值的语句中使用相同的结果变量 1
- 添加了break语句,所以在long值到达后循环将停止
找到
- 使用默认值和预先设置 "Nothing here" 消除了对 else 块的需要。
我是 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
- 在
if (array1)
中使用了groovy-真实性测试
- 在所有计算 return 值的语句中使用相同的结果变量 1
- 添加了break语句,所以在long值到达后循环将停止 找到
- 使用默认值和预先设置 "Nothing here" 消除了对 else 块的需要。