java后台怎么接收并解析前台传过来的json
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java后台怎么接收并解析前台传过来的json相关的知识,希望对你有一定的参考价值。
参考技术A package cn.iambestcoder.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.iambestcoder.bean.Student;
import cn.iambestcoder.mysql.ConnectMySql;
@WebServlet( name = "Score",urlPatterns = "/Score")
public class Score extends HttpServlet
private ArrayList<Student> list = new ArrayList<>();
private String ids[] = null;//学号
private String kinds[] = null;//考试种类
private String scores[] =null;//分数
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
ids = request.getParameterValues("id");
kinds = request.getParameterValues("kind");
scores = request.getParameterValues("score");
for(int i=0;i<scores.length;i++)
Student student = new Student(ids[i],null,kinds[i],new Integer(scores[i]));
list.add(student);
int code = new ConnectMySql().updateScore(list);
if(code == 0)//修改失败
PrintWriter writer = response.getWriter();
writer.write("Sorry");
writer.flush();writer.close();
else//修改成功
response.sendRedirect("index.jsp");
java在后台如何将前台传过来的json格式数据转换为map?
"a":0,"b":1,"c":1,"d":1
这是前台传过来的数据格式,请问如何转换为map?
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
/**
* JSON字符串自动转换
* Created by zkn on 2016/8/22.
*/
public class JsonToMapTest01
public static void main(String[] args)
String str = "\\"0\\":\\"zhangsan\\",\\"1\\":\\"lisi\\",\\"2\\":\\"wangwu\\",\\"3\\":\\"maliu\\"";
//第一种方式
Map maps = (Map)JSON.parse(str);
System.out.println("这个是用JSON类来解析JSON字符串!!!");
for (Object map : maps.entrySet())
System.out.println(((Map.Entry)map).getKey()+" " + ((Map.Entry)map).getValue());
//第二种方式
Map mapTypes = JSON.parseObject(str);
System.out.println("这个是用JSON类的parseObject来解析JSON字符串!!!");
for (Object obj : mapTypes.keySet())
System.out.println("key为:"+obj+"值为:"+mapTypes.get(obj));
//第三种方式
Map mapType = JSON.parseObject(str,Map.class);
System.out.println("这个是用JSON类,指定解析类型,来解析JSON字符串!!!");
for (Object obj : mapType.keySet())
System.out.println("key为:"+obj+"值为:"+mapType.get(obj));
//第四种方式
/**
* JSONObject是Map接口的一个实现类
*/
Map json = (Map) JSONObject.parse(str);
System.out.println("这个是用JSONObject类的parse方法来解析JSON字符串!!!");
for (Object map : json.entrySet())
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
//第五种方式
/**
* JSONObject是Map接口的一个实现类
*/
JSONObject jsonObject = JSONObject.parseObject(str);
System.out.println("这个是用JSONObject的parseObject方法来解析JSON字符串!!!");
for (Object map : json.entrySet())
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
//第六种方式
/**
* JSONObject是Map接口的一个实现类
*/
Map mapObj = JSONObject.parseObject(str,Map.class);
System.out.println("这个是用JSONObject的parseObject方法并执行返回类型来解析JSON字符串!!!");
for (Object map: json.entrySet())
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
String strArr = "\\"0\\":\\"zhangsan\\",\\"1\\":\\"lisi\\",\\"2\\":\\"wangwu\\",\\"3\\":\\"maliu\\"," +
"\\"00\\":\\"zhangsan\\",\\"11\\":\\"lisi\\",\\"22\\":\\"wangwu\\",\\"33\\":\\"maliu\\"";
// JSONArray.parse()
System.out.println(json);
//转换为json键值对象
JSONObject jsonObject = new JSONObject().fromObject(result);
//根据json的键获得对应的值
String value= jsonObject.getString(key);
希望能帮到您。追问
谢谢!!
如果要转成map,那应该怎么做呢?
还有,我从前台传回来的值有中文,到后台就变成乱码了,但是我后台里也有写
request.setCharacterEncoding("UTF-8");
为什么还是乱码呢?
把提交数据方式改为post方式,前台跟后台编码一致就不会出问题!至于json怎么转map我在网上试了很多方法都失败了,你可以研究研究。
本回答被提问者和网友采纳 参考技术C JSON数据,在后台接收到时,以JSONObject为例;JSONObject js_obj = JSONObject.parse(接收到前台传递JSON的字符串);
转换为json对象,map 我们都清楚,其实是以键队的形式存储的,
所以,我们在已知json属性的前提下将js_obj对象值取出,赋值给新的map对象即可。 参考技术D 搞不定你现在是JSON还为什么要转成MAP 你在这里不就可以直接获取数据了吗
如:
function(data)//data是你的"a":0,"b":1,"c":1,"d":1
这里直接data.a就可以获取0了 data.b就可以获取1了
以上是关于java后台怎么接收并解析前台传过来的json的主要内容,如果未能解决你的问题,请参考以下文章
java在后台如何将前台传过来的json格式数据转换为map?