Как вернуть объект JSON из сервлета Java
Как вы возвращаете объект JSON из сервлета Java.
ранее при выполнении AJAX с сервлетом я вернул строку. Есть ли тип объекта JSON, который необходимо использовать, или вы просто возвращаете строку, которая выглядит как объект JSON, например
String objectToReturn = "{ key1: 'value1', key2: 'value2' }";
10 ответов
Я делаю именно то, что вы предлагаете (возвратить String
).
вы можете рассмотреть возможность установки типа MIME, чтобы указать, что вы возвращаете JSON, хотя (согласно этот другой пост stackoverflow Это "приложение / json").
запишите объект JSON в выходной поток объекта response.
вы также должны установить тип контента следующим образом, который будет указывать, что вы возвращаете:
response.setContentType("application/json");
// Get the printwriter object from response to write the required json object to the output stream
PrintWriter out = response.getWriter();
// Assuming your json object is **jsonObject**, perform the following, it will return your json object
out.print(jsonObject);
out.flush();
сначала преобразуйте объект JSON в String
. Затем просто напишите его в response writer вместе с типом контента application/json
и кодировка символов UTF-8.
вот пример, предполагающий, что вы используете Google Gson чтобы преобразовать объект Java в строку JSON:
protected void doXxx(HttpServletRequest request, HttpServletResponse response) {
// ...
String json = new Gson().toJson(someObject);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}
вот и все.
Читайте также:
как вы возвращаете объект JSON из сервлета Java
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
//create Json Object
JsonObject json = new JsonObject();
// put some value pairs into the JSON object .
json.put("Mobile", 9999988888);
json.put("Name", "ManojSarnaik");
// finally output the json string
out.print(json.toString());
просто напишите строку в выходной поток. Вы можете установить MIME-тип text/javascript
(редактировать: application/json
видимо officialer) если ты чувствуешь себя полезным. (Есть небольшой, но ненулевой шанс, что когда-нибудь это что-то не испортит, и это хорошая практика.)
Gson очень полезен для этого. даже легче. вот мой пример:
public class Bean {
private String nombre="juan";
private String apellido="machado";
private List<InnerBean> datosCriticos;
class InnerBean
{
private int edad=12;
}
public Bean() {
datosCriticos = new ArrayList<>();
datosCriticos.add(new InnerBean());
}
}
Bean bean = new Bean();
Gson gson = new Gson();
String json =gson.toJson(bean);
выход.print (json);
{"nombre": "juan", "apellido":"machado","datosCriticos": [{"edad": 12}]}
должны сказать люди, если ваши vars пусты при использовании gson, он не будет строить json для вас.Просто
{}
может быть объект JSON для удобства кодирования Java. Но, наконец, структура данных будет сериализован в строку. Было бы неплохо установить правильный тип MIME.
Я предлагаю в формате JSON в Java от json.org.
Я Джексон преобразовать объект Java в строку JSON и отправить следующим образом.
PrintWriter out = response.getWriter();
ObjectMapper objectMapper= new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(MyObject);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
out.print(jsonString);
out.flush();
ответ.setContentType ("text/json");
/ / создайте строку JSON, я предлагаю использовать некоторые рамки.
строка your_string;
выход.write(your_string.getBytes ("UTF-8"));
вблизи BalusC ответ в 4 простых строках с помощью Google Gson lib. Добавьте эти строки в метод servlet:
User objToSerialize = new User("Bill", "Gates");
ServletOutputStream outputStream = response.getOutputStream();
response.setContentType("application/json;charset=UTF-8");
outputStream.print(new Gson().toJson(objToSerialize));
удачи!