【问题标题】:I cannot get the inner value of a JSON object我无法获取 JSON 对象的内部值
【发布时间】:2019-05-17 18:02:17
【问题描述】:

我无法获取这个 json 对象的内部嵌套键的值(它从我们的 API 调用获取响应,我只是从空手道复制响应)


[
  {
    "code": 200,
    "result": "[{\"distinct\":false,\"operatetime\":\"2019-05-17 17:01:01\",\"personid\":\"e8edec61-fd1a-4c69-8b60-fb8d21d06095\",\"sampleid\":\"1c9410cd-608d-4eb1-8d12-c8f2faf7fca4\"}]"
  }
]
And def tempreponse = [{"code":200,"result":"[{\"distinct\":false,\"operatetime\":\"2019-05-17 17:01:01\",\"personid\":\"e8edec61-fd1a-4c69-8b60-fb8d21d06095\",\"sampleid\":\"1c9410cd-608d-4eb1-8d12-c8f2faf7fca4\"}]"}]

并且 def temp1 = tempreponse[0].result

其实我需要获取personid和sampleid的值,但是失败了

【问题讨论】:

  • 您正在将 字符串 放入 result,但您正尝试将其作为数组访问。需要先解析字符串。
  • result 不是嵌套对象,而是一个简单的字符串值——它本身又包含 JSON。您需要对 tempreponse[0].result 进行 JSON 解码,然后才能获得具有要访问的属性的对象数组。
  • 是的,我明白了。感谢您的热心帮助。那么我们制作的响应不正确或者空手道的响应有问题,我会深入研究它

标签: karate


【解决方案1】:

是的,您的响应看起来很错误,JSON 中的字符串等等。但即使这是预期的反应,空手道也能应付。请参阅有关类型转换的文档:https://github.com/intuit/karate#type-conversion

* def response =
"""
[
  {
    "code": 200,
    "result": "[{\"distinct\":false,\"operatetime\":\"2019-05-17 17:01:01\",\"personid\":\"e8edec61-fd1a-4c69-8b60-fb8d21d06095\",\"sampleid\":\"1c9410cd-608d-4eb1-8d12-c8f2faf7fca4\"}]"
  }
]
"""
* json result = response[0].result
* def personId = result[0].personid
* match personId == 'e8edec61-fd1a-4c69-8b60-fb8d21d06095'

【讨论】:

  • 哇~⊙o⊙ 是的,它有效。空手道非常出色,我喜欢它。感谢您的快速回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 2015-08-14
  • 2022-07-29
相关资源
最近更新 更多