![](/img/trans.png)
[英]org.json JSONObject adding extra object to JSONObject while returning it from spring boot controller
[英]How do I receive a JSONObject from post on spring boot rest controller (from org.json)
我希望我的 RESTcontroller 从发布请求中获取 JSONObject,但是当我通过 Postman 发送它时:
{
"collection":"StudentDB",
"index":{
"joinDate":"2022-12-12"
}
}
它似乎在工作,但问题是嵌入式 JSONObjects 似乎被转换为 LinkedHashmap 而不是 JSONObjects,所以当我运行这段代码时:
@PostMapping
@RequestMapping(value="/query",consumes="application/json")
public ResponseEntity query( @RequestBody JSONObject query) {
System.out.println(query.get("index").getClass());
}
Output 是:
class java.util.LinkedHashMap
是什么原因造成的? 还有其他方法可以做到这一点吗?
看起来你得到 java.util.LinkedHashMap 索引键值的原因是因为在引擎盖下 JSONObject 使用 Map 来存储它的键值对。
所以每个键值对(例如,“collection”:“StudentDB”)实际上存储在这个 map 中,它被包装在一个 JSONObject 中。
当你写 "index": { key-value pairs here } 时,你基本上告诉 JSONObject 你想要创建另一个 Map(对于将在 { } 内的键值对),它将作为 index 的值钥匙。
至于这里为什么使用LinkedHashMap,是因为JSONObject需要保留其元素的顺序,所以LinkedHashMap就是这样做的。
您的问题的解决方案取决于您在这里想要实现的目标。 该程序的逻辑似乎没问题,所以希望您能根据我在这里写的内容弄清楚该怎么做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.