我尝试创建JSON对象。我的代码:
Map<String,List<Map<String, List<Map<String, Object>>>>> GroupsMap = new HashMap<String,List<Map<String, List<Map<String, Object>>>>>();
List<IamMonitoringServerType> typ = DBProvider.GetAllServerTypesConfiguration();
for (IamMonitoringServerType type : typ){
Map<String, List<Map<String, Object>>> serversMap = new HashMap<>();
List<Map<String, List<Map<String, Object>>>> groupList = new ArrayList<Map<String, List<Map<String, Object>>>>();
List<IamMonitoringServer> servers = DBProvider.GetServersByType(type);
for ( IamMonitoringServer server : servers) {
Map<String,Object> parameterMap = new HashMap<String,Object>();
List<Map<String, Object>> serverList = new ArrayList<Map<String, Object>>();
String server_name = server.getServerName();
int id = server.getId().intValue();
int newest_data_id = DBProvider.getNewestServerDataId(id);
parameterMap.put("server_id", id);
parameterMap.put("newest_data_id", newest_data_id);
serverList.add(parameterMap);
serversMap.put(server_name, serverList);
}
groupList.add(serversMap);
GroupsMap.put(type.getServerTypeName(), groupList);
}
System.out.println("GsON OBJECT: "+ new Gson().toJson(GroupsMap));
,结果如下:
{
"GROUP_NAME_1":
[
{
"1_server":
[
{
"server_id":17,
"newest_data_id":991380
}
],
"2_server":
[
{
"server_id":16,
"newest_data_id":991383
}
],
"3_server":
[
{
"server_id":14,
"newest_data_id":991389
}
]
}
]
,"GROUP_NAME_2":
[
{
"4_server":
[
{
"server_id":1,
"newest_data_id":991395
}
],
"5_server":
[
{
"server_id":13,
"newest_data_id":991382
}
],
"6_server":
[
{
"server_id":3,
"newest_data_id":991390
}
]
}
]
}
我想将此结果更改为这样的格式(其中一个组的样本):
{
"GROUP_NAME":
[
{
"server_name": "4_server"
"serverIp": xxx.xxx.xxx.xxx
"param":
[
{
"server_id":1,
"newest_data_id":991395
}
],
"server_name": "5_server"
"serverIp": xxx.xxx.xxx.xxx
"param":
[
{
"server_id":13,
"newest_data_id":991382
}
]
}
]
}
我修改了我的代码,但此时我只收到每组最后一台服务器:
Map<String,List<Map<String, Object>>> GroupsMap = new HashMap<String,List<Map<String, Object>>>();
List<IamMonitoringServerType> typ = DBProvider.GetAllServerTypesConfiguration();
for (IamMonitoringServerType type : typ){
Map<String, Object> servers_nameMap = new HashMap<>();
List<Map<String, Object>> groupList = new ArrayList<>();
List<IamMonitoringServer> servers = DBProvider.GetServersByType(type);
for ( IamMonitoringServer server : servers) {
Map<String,Object> parameterMap = new HashMap<String,Object>();
List<Map<String, Object>> serverList = new ArrayList<Map<String, Object>>();
String server_name = server.getServerName();
int id = server.getId().intValue();
int newest_data_id = DBProvider.getNewestServerDataId(id);
parameterMap.put("server_id", id);
parameterMap.put("newest_data_id", newest_data_id);
serverList.add(parameterMap);
servers_nameMap.put("server_name", server_name);
servers_nameMap.put("server_ip", server_name);
servers_nameMap.put("param", serverList);
}
groupList.add(servers_nameMap);
GroupsMap.put(type.getServerTypeName(), groupList);
}
System.out.println(new Gson().toJson(GroupsMap));
我是Java编程的初学者,我认为原因是将元素列表更改为Object。我应该如何纠正我的代码以获得预期的结果?
第二个问题是,当我想获取特定数据,例如服务器名称,参数列表或特定参数值时,如何在Servlet端解析这个JSON对象?