在Java中将ArrayList转换为JSON对象
新手Java问题:我有ArrayList
个值存储我的用户对象的属性,如下所示:
{"users":["Bob", 35, "230 Elm Street", "bob@website.com"]}
我的用户对象:
public class User{
private String name;
private int age;
private String address;
private String email;
//getters & setters
}
我需要将这些值映射到它们各自的属性,以便返回正确的键/值JSON对象,如下所示:
["name": "Bob", "age": 35, "address": "230 Elm Street", "email": "bob@website.com"]
我对如何处理这个问题有点困惑;我是否需要使用Map
在遍历列表时手动设置每个键,例如
for(User user : list){
HashMap myMap = new HashMap();
myMap.put("name", user.getName());
myMap.setAge("age", user.getAge());
//etc...
}
//Convert Map to JSON
return new JSONObject(myMap);
还是比这更简单?谢谢你的帮助
# 1 楼答案
最好的办法是学习Jackson序列化API。在封面下,Spring MVC使用了Jackson。你最好在谷歌上搜索杰克逊教程,并在https://github.com/FasterXML/jackson上查看官方文档
请注意,如果您想调整JSON格式,那么可以向Java对象添加一些Jackson注释
# 2 楼答案
你可以使用
Gson provided by google
它会自动为你做这件事。还有其他各种解析器,如jackson、ig parser(instagram提供)。 下面是一个使用gson的示例转换为json
# 3 楼答案
如果使用Spring MVC,则不需要了解JSON,它在@RestController中是透明的
只需在maven中包括:
# 4 楼答案
首先,对于
User
对象的列表,JSON需要不同。其当前的表述如下所示要将这个json映射到
List<User>
,我们可以使用Jackson库中提供的ObjectMapper
实现阅读此Link以获取更多帮助