我对servlet非常陌生,无法从HttpServletRequest读取JSON数组
我将JSON以下的内容发送到Java
page: 1
start: 0
limit: 20
sort: [{"property":"fiscalYear","direction":"DESC"}]
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String[] s=request.getParameterValues("sort");
for(int i=0;i<s.length;i++)
} System.out.println(s[i]);
实际输出
[{"property":"fiscalYear","direction":"DESC"}]
预期的输出分别获得值为financialYearYear和DESC
答案 0 :(得分:1)
getParameterValues(String name) 将返回字符串数组
String[] getParameterValues(String name)
返回一个String对象数组,其中包含给定请求参数具有的所有值;如果该参数不存在,则返回null。
如果参数具有单个值,则数组的长度为1。
getParameter(String name) 仅返回String
以字符串形式返回请求参数的值,如果该参数不存在,则返回null。请求参数是与请求一起发送的额外信息。对于HTTP Servlet,参数包含在查询字符串或发布的表单数据中。
只有在确定参数只有一个值时,才应使用此方法。如果参数可能具有多个值,请使用getParameterValues(java.lang.String)。
基于此,您可以使用getParameter
,它返回代表字符串的JSON
String s=request.getParameter("sort"); // {"property":"fiscalYear","direction":"DESC"}
现在使用ObjectMapper
来读取解析JSON
字符串
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(s);
String property = jsonNode.get("property").asText();
String direction = jsonNode.get("direction").asText();
如果它是Array
JsonObjects
中的//[{"property":"fiscalYear","direction":"DESC"}]
JsonNode jsonNode = objectMapper.readTree(s);
JsonNode node = jsonNode.get(0);
String property = node.get("property").asText();
String direction = node.get("direction").asText();
答案 1 :(得分:0)
您可以创建一个保存此信息的对象:
public class SortDto {
private String property;
private String direction;
// getters, setters, toString() ..
}
然后创建一个ObjectMapper
:
ObjectMapper mapper = new ObjectMapper();
String sortJson = request.getParameter("sort");
// I suppose that sortJson is => {"property":"fiscalYear","direction":"DESC"}
SortDto dto = mapper.readValue(sortJson, SortDto.class);
然后,您可以在类中重写toString()
方法或调用dto.getProperty()
dto.getDirection()
来分别获取值。
注意
我使用request.getParameter("sort")
返回一个字符串,而不是request.getParameterValues("sort")
返回一个值数组
答案 2 :(得分:0)
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String str=request.getParameterValues("sort");
// str=" [{\"property\":\"fiscalYear\",\"direction\":\"DESC\"}]";
JSONArray array=new JSONArray(str);
for(int i=0;i<array.length();i++){
JSONObject json_obj = array.getJSONObject(i);
System.out.println( json_obj.getString("direction"));
}
}
DESC