java - 如何在java中比较两个不同的JSON响应结构?

标签 java arrays json object jmeter

我必须比较两个不同的 JSON 结构,并想知道每个节点的响应中发生的不匹配。比较的响应将具有不同的属性名称,但值相等。我需要知道映射属性的方法两个响应。

示例:

我必须提供整体比较(只是比较属性的模板)

info array          ------------> Details array
image attribute     ------------> photo attribute     
name attribute      ------------> text attribute     
type attribute      ------------> use attribute
homepage object     ------------> Toppage object

因此,在比较我的结果后,它应该在我的日志中显示属性值的不匹配。

现在,我只是使用 jmeter 来获取调用的响应,并在 beanshell 采样器中编写 java 代码。我现在使用的 rite 包是 json.org现在,我正在比较每个属性并打印日志。这样做的目的是,我们从客户端获取 json 数据,但使用我们的代码再次过滤和构造所需的数据。这样就形成了结构化的 JSON,我必须验证并打印日志错误。

Suppose Consider Two response Structure:

JSON A:

{
  "info": [
    {
      "image": "small.jpg",
      "name": "flipkart_small",
      "Type": "logo"
    },
    {
      "image": "medium.jpg",
      "name": "flipkart_medium",
      "Type": "popup"
    },
    {
      "image": "large.jpg",
      "name": "flipkart_large",
      "Type": "banner"
    }
  ],
  "homepage": {
    "Electronic": {
      "name": "Electronic",
      "type": "category",
      "link": "http://flipkart.com/Electronic"
    },
    "image": {
      "src": "Images/samsung_s4.png",
      "name": "s4",
      "width": 250,
      "height": 250,
      "alignment": "center"
    },
    "Description": {
      "text": "Flipkart is a leading destination for online shopping in India.",
      "size": 36,
      "style": "bold",
      "name": "text1",
      "alignment": "justify"
    }
  }
}


JSON B:

{
  "Details": [
    {
      "photo": "small.jpg",
      "text": "flipkart_small",
      "use": "logo"
    },
    {
      "photo": "medium.jpg",
      "text": "flipkart_medium",
      "use": "popup"
    },
    {
      "photo": "large.jpg",
      "text": "flipkart_large",
      "use": "banner"
    }
  ],
  "Toppage": {
    "ElectronicSection": {
      "text": "Electronic",
      "use": "category",
      "url": "http://flipkart.com/Electronic"
    },
    "photo": {
      "path": "Images/samsung_s4.png",
      "name": "s4",
      "w": 250,
      "h": 250,
      "display": "center"
    },
    "information": {
      "desp": "Flipkart is a leading destination for online shopping in India.",
      "length": 36,
      "style": "bold",
      "value": "text1",
      "display": "justify"
    }
  }
}

最佳答案

首先我建议使用 JSONPathExtractor JMeter Plugin提供的后处理器组件(您需要“带有库集的附加功能”)。

参见Parsing JSON有关如何使用 JSON 路径的部分。

关于java - 如何在java中比较两个不同的JSON响应结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21495272/

相关文章:

c++ - 初始化二维动态数组 C++ 时读取访问冲突

javascript - 从本地 JSON 文件中获取数据的 Morris 图表

c - 在c中的结构中初始化灵活的结构指针数组

arrays - 使用指针在 C 中跳过空格

java - Grails 无法接收序列化数据

javascript - 从对象数组中按键创建对象数组

java - 在不指定消息类型或事件类型或版本的情况下读取 HL7 消息

java.lang.IllegalStateException : Timer already cancelled even when i am creating a new instance of the class itself 错误

java - Android - main.xml 和 Activity_main.xml 是同一概念吗?

java - JVM 的内联和继承的交互