作者:月光魔术师2702935955 | 来源:互联网 | 2022-11-22 13:20
我正在尝试在REST API中从下面的JSON解析productId,名称和价格-但是尝试获取他时我得到了空指针异常name
- String name = (String) obj.get("name");
,我可以知道我在做什么错吗?
任何帮助将非常感激。谢谢!
JSON:
{
"id": "af0b86eb-046c-4400-8bc4-0e26042b8f53",
"products": [{
"productId": "1234",
"name": "apple",
"price": "383939"
}
]
}
Controller.java
public ResponseEntity create(@RequestBody Map obj) {
Product respOnse= myservice.create(obj);
return new ResponseEntity(response, HttpStatus.CREATED);
}
Service.java
public Product create(Map obj) {
for (Entry entry : obj.entrySet()) {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
}
Object [] products = (Object[]) obj.get("products");
HashMap productOne= (HashMap) products[0];
String productId = (String) productOne.get("name");
System.out.println("productId: " +productId);
String name = (String) obj.get("name");
System.out.println("name: " +name);
}
输出:
Key : products Value : [{productId=1234, name=apple, price=383939}]
Dmitry Bogda..
5
通过obj.get("name")
,您尝试name
从json请求的顶层通过键获取值,而这是第二层对象的属性
在伪代码(跳过转换和空检查)中,它应如下所示:
obj.get("products")[0].get("name")
1> Dmitry Bogda..:
通过obj.get("name")
,您尝试name
从json请求的顶层通过键获取值,而这是第二层对象的属性
在伪代码(跳过转换和空检查)中,它应如下所示:
obj.get("products")[0].get("name")