JSONObject的問題- 在用JSONObject傳參到controller接收為空白和JSONArray添加json后轉string不正確


 

問題一:

在用JSONObject傳參到controller接收為空白的問題:

@RestController
@RequestMapping("/callback")
public class CallbackApiController {
Logger logger = LoggerFactory.getLogger(this.getClass());

@PostMapping("/callBackJson")
public void callBackJSON(@RequestBody org.json.JSONObject jsonObject){
logger.info("傳遞參數,param={}",jsonObject.toString());
logger.info("-------->回調成功!<------------");
}


}

運行結果:

2020-05-14 13:53:47.398 INFO 32904 --- [io-16016-exec-1] c.t.c.controller.CallbackApiController : 傳遞參數,param={}
2020-05-14 13:53:47.398 INFO 32904 --- [io-16016-exec-1] c.t.c.controller.CallbackApiController : -------->回調成功!<------------

將JSONObject的類型從

org.json.JSONObject

替換為
com.alibaba.fastjson.JSONObject

的運行成功,結果如下:

2020-05-14 13:56:09.585 INFO 33684 --- [io-16016-exec-2] c.t.c.controller.CallbackApiController : 傳遞參數,param={"url":"www.baidu.com"}
2020-05-14 13:56:09.585 INFO 33684 --- [io-16016-exec-2] c.t.c.controller.CallbackApiController : -------->回調成功!<------------

 

問題二

public static void main(String[] args) {
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
json.put("mm","22");
json.put("timestamp","jljlj");
array.add(json);
json.clear();
json.put("mm","jjj");
json.put("timestamp","oooo");
array.add(json);;
System.out.println(array.toJSONString());
}
運行結果[{"mm":"jjj","timestamp":"oooo"},{"$ref":"$[0]"}]
這樣導致傳送數據給第三方的接口時總是報錯500解析不了,這是第二個加入的是第一個的引用,索引應該創建兩個對象加入array中,如下正常
public static void main(String[] args) {
JSONObject json = new JSONObject();
JSONObject json2 = new JSONObject();
JSONArray array = new JSONArray();
json.put("mm","22");
json.put("timestamp","jljlj");
json2.put("mm","jjj");
json2.put("timestamp","oooo");
array.add(json);
array.add(json2);
System.out.println(array.toJSONString());
}
運行結果:[{"mm":"22","timestamp":"jljlj"},{"mm":"jjj","timestamp":"oooo"}]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM