1. 程式人生 > >在JSON中遇到的一些坑

在JSON中遇到的一些坑

成了 數據 發送請求 並且 一個 請求 字符串 排除 接口

今天在進行壓測的時候,由於需要使用到json進行傳參,並且需要在JMeter中加入少量的JSON,由於JSON在java中呈現鍵值對的形式,並且需要使用到“”來修飾,導致只能使用\進行轉義,在發送請求的時候,還需要對相關數據進行RSA加密,很奇怪的事情發生了,編寫了三個json,有兩個json發送到後臺後,是正常的可以進行RSA加簽以及驗簽的,有一個JSON死活都過不去。

發現問題:一段JSON通過加簽,正常,發送到服務器後,進行驗簽操作的時候,出現,驗簽不通過。

解決問題:

1. 檢查公私鑰是否正確,由於分析前兩個秘鑰是正常的,可以排除秘鑰不一致的問題

2. 是否由於驗證簽名方法出現了問題?檢查方法後發現沒有問題

3. 檢查JSON是否出現問題?初步檢查沒有問題;

JOSN通過轉化後出現如下圖

"{\"sequenceNo \":\"201806050054"+vars.get("quotaNo")+"\"," +
		"\"ts\":\"1318041322348\"}"

4. 再次檢查JSON後發現,在sequenceNo 前面有一個空格,沒有發現

5. 刪除空格後,驗證後成功

問題分析:

1. 由於在JSON中存在空格,暫時沒有發現導致,為什麽會出現這種問題?有以下幾個原因:

接口文檔中存在空格;

由於源文檔中存在空格是沒有問題的,但是由於在後臺處理的時候,將其通過fastjson轉換成了Object類,由於轉換後又將Object序列化層JSON字符串後,導致空格丟失,再進行驗證RSA時候導致驗證不通過,導致出現上述問題。

總結:

  1. 謹慎使用JSON字符串進行拼接。

  2. 如果需要轉換成JSON字符串,最好采用工具進行轉換,防止此次問題的發生

在JSON中遇到的一些坑