2015-07-20 4 views
2

В Java, у меня есть HashMap, как показано нижепреобразовать карту пользовательского объекта в объект json?

Map<String, List<Employee>> = new HashMap<String, List<Employee>>(); 

Мне нужно преобразовать вышеупомянутую карту объекта JSon

Что я пробовал: -

использовали jsonObject вместо HashMap и JsonArray вместо list

com.amazonaws.util.json.JSONObject jsonObject = new com.amazonaws.util.json.JSONObject(); 
com.amazonaws.util.json.JsonArray empList = new JsonArray(); 
empList.add(empObject) 
jsonObject.put("some String", empList); 

Затем добавьте jsonObject в атрибут запроса

request.setAttribute("empMap", jsonObject.toString()); 

но когда я получить его в JavaScript я получить значение JSONObject

{emp_10:[[email protected]]} 

Как вы можете видеть выше я получить значение [email protected] не его свойства, почему так ?

также есть лучший способ, где я могу преобразовать HashMap заказного объектаMap<String, List<Employee>> т.е. к объекту JSon без использования JSONObject вместо HashMap и JsonArray вместо списка?

Я использую уже ниже библиотек в моем проекте и открыт для использования какой-либо новый если требуется

Jettison Library (org.codehaus.jettison.json.JSONObject) 
json-lib(net.sf.json.JSONObject) 
apache json library (com.amazonaws.util.json.JSONObject) 
+1

осуществлять ToString(), как это кажется по умолчанию ToString вызывается и возвращает ссылку на объект – vinayakj

+0

вам нужно перезаписать ToString метод – Zion

+0

@ user3198603 - Вы проверили мой ответ? Это сработало для вас? – nikhil

ответ

0

Я думаю, что вы должны иметь дополнительную функцию помощника в конце Java

public JSONObject asJSON(Employee employee) { 
    ObjectMapper mapper = new ObjectMapper(); 
    return new JSONObject(mapper.writeValueAsString(employee)); 
} 

и вместо добавления empObject в следующем, добавьте обновленное значение asJSON(empObject)

empList.add(empObject) 

Кроме того, удалить .toString()

request.setAttribute("empMap", jsonObject.toString()); 
Смежные вопросы