【问题标题】:Groovy - ArrayList remove bracketsGroovy - ArrayList 删除括号
【发布时间】:2021-04-12 09:32:46
【问题描述】:

我已经解析了下面的 Json 文件并检索了用户名值。

"LogInFunctionTest": [
    {
      "TestCaseID": "Login-TC_02",
      "TestScenario": "Negative Case - Login with unregistered username and Password",
      "TestData": [
        {
          "UserName": "usernameX",
          "Password": "passwordX"
        }
      ]

使用以下代码检索UserName 值。

def InputJSON = new JsonSlurper().parse(new File(fileName))
def testDataItem = InputJSON.LogInFunctionTest.find { it.TestCaseID == Login-TC_02 }.TestData.UserName

输出 - [usernameX]

在此之后,我想从上面删除括号。

'Remove brackets from arraylist'
        testDataItem = testDataItem.substring(1, testDataItem.length() - 1)
        

我遇到了以下异常

org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.length() is applicable for argument types: () values: []
Possible solutions: last(), last(), init(), init(), get(int), get(int)

有人指导我们如何从输出中删除括号?

【问题讨论】:

    标签: java grails groovy


    【解决方案1】:

    testDataItem 是一个用户名列表,因为TestData 包含一个列表

    这就是为什么当它显示给你时,它周围有[]...

    如果你只想要列表中的第一个,那么你可以这样做:

    def testDataItem = InputJSON
        .LogInFunctionTest
        .find { it.TestCaseID == 'Login-TC_02' }
        .TestData
        .UserName
        .first()
    

    (即:最后拨打first())

    显然,如果有两个,你只会得到第一个

    您也可以使用.UserName[0] 获得第一个,但.first() 更具描述性

    【讨论】:

      【解决方案2】:
      testDataItem = testDataItem.get(0)
      

      或许能胜任。

      看起来您正在阅读字符串列表,而不是字符串。

      【讨论】:

      • 感谢您的帮助,上面的代码返回“sername”而不是“usernameX”所以我改变了位置“testDataItem = testDataItem.getAt(0).substring(0, testDataItem.getAt(0) .length() - 0)"
      • 是的,没错,整个子串是不必要的!
      【解决方案3】:

      从技术上讲,您将“TestData”称为带有上述括号的列表,因此正确的参考应该是:

      TestData[0].UserName
      

      ...或者因为它都包含在“LogInFunctionTest”列表中:

      LogInFunctionTest[0].TestData[0].UserName
      

      也就是说,如果您不打算循环/迭代它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-21
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 2018-05-20
        • 2019-08-11
        • 2018-11-07
        相关资源
        最近更新 更多