前台怎么将数据组织为json数据,后台怎么将数据组织为json数据,后台怎么接收前台传过来的json数据(springMVC的controller),接收后怎么处理/解析?
1.前台将数据组织为json数据 用json2.js,引入js文件 自己百度一下json2.js 的序列化和反序列化
var jsonObj = { id: '01', name: 'Tom' };
var json=JSON.stringify(jsonObj);
console.log(json);
2.后台怎么讲数据组织为json数据,我一般用fastjson,是阿里巴巴分享的,引入fastjson的jar包做相应的操作,有jsonarray和jsonobject对象
Map map = new HashMap();
map.put("key1", "One");
map.put("key2", "Two");
String mapJson = JSON.toJSONString(map);
3.4.后台怎么接收前台传递的json数据 ,接收后怎么处理
我一般是将json数据转为json字符串,后台用string接收,再用fastjson的jsonarray或者jsonobject解析
前台把数据组织成json需要自己拼吧,通过ajax传递到后台,后台直接在方法的参数列表中接收,如果是多个参数可以把所有参数封装成一个类;后台可以通过方法把数据转换成json格式,也可以使用responsebody注解自动转换成json
前台使用js异步传送json数据,一般都是使用jquery的ajax插件的,就是$.ajax({url:你要传数据到的地方,data:你要传的数据,success:成功之后执行的js函数});
而后台springmvc要接受这个json对象,在方法上面添加@requestMapping注解,方法的参数可以设置为你接受的的对象,比如User u,传来的数据会按照字段的名称进行注入,
在controllor方法上添加@responseBody注解,要返回json数据直接return就可以了
json结构是个数组,拼成文本就可以,传到后台后,后台用有关语句解析
前台js传参数的时候,用JSON.stringify(参数),转成json字符串,后台用字符串接受,然后Gson 解析
<form id="formid">
<input name="username"/>
</form>
这样的话,用$('#formid').serialize()或者$('#formid').serializeArray()变成json对象。用$.ajax发送到后台,以及接收后台的处理结果。
后台的话,有很多json工具一键转成java对象,或者吧java对象转成json字符串,比如Gson,jackson2
可以用谷歌的Gson包
Google的gson库将一个对象直接转成json字符串,服务器下发的也是json的字符串
$.ajax({ url:"/控制器/方法", type:"post", success:function(obj) { alert(obj); } })这个 obj 就是 你要的Json值
前后台传值一般都是用ajax,当然你也可以将参数直接放在网址后面加?参数名=参数值&参数2=参数2值.... 至于ajax的话 网上很多
数组用jsonarray,map集合(键值对)用jsonobject 首先要先把数组的数据结构理清楚才能进行有效的jsonarray,map集合
/**
* 向浏览器响应json格式字符串
* @param jsonMap
* @return
* @throws Exception
*/
public String jsonOut(Object jsonMap)throws Exception{
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(jsonMap);
response.setContentType("text/json;charset=UTF-8");
response.getWriter().print(jsonString.toString());
return null;
}
前台可以通过$.ajax()请求接受传回来的json字符串
前后台传值一般都是用ajax
前台传来的json,这是我从一位大哥那边复制过来的:
Object json = "{'name':'张三','xingming':'男', "
+"'testData':{"
+"'tqq':{'Ceshichengji':'25.6','Dengji':'优秀','Pingjiadengji':'5','Ceshixiangmumingcheng':'坐位体前屈'},"
+"'fys':{'Ceshichengji':'0.93','Dengji':'差','Pingjiadengji':'1','Ceshixiangmumingcheng':'选择反应时'},"
+"'fwc':{'Ceshichengji':'5','Dengji':'差','Pingjiadengji':'1','Ceshixiangmumingcheng':'俯卧撑'},"
+"'fhl':{'Ceshichengji':'517','Dengji':'差','Pingjiadengji':'1','Ceshixiangmumingcheng':'肺活量'},"
+"'bydjzl':{'Ceshichengji':'5','Dengji':'稍差','Pingjiadengji':'2','Ceshixiangmumingcheng':'闭眼单脚站立'},"
+"'zt':{'Ceshichengji':'74.8','Dengji':'优秀','Pingjiadengji':'5','Ceshixiangmumingcheng':'纵跳'},"
+"'wl':{'Ceshichengji':'8.3','Dengji':'差','Pingjiadengji':'1','Ceshixiangmumingcheng':'握力'},"
+"'tj':{'Ceshichengji':'28.6','Dengji':'差','Pingjiadengji':'1','Ceshixiangmumingcheng':'台阶指数'},"
+"'bl':{'Ceshichengji':'23','Dengji':'差','Pingjiadengji':'0','Ceshixiangmumingcheng':'背力'},"
+"'tz':{'Ceshichengji':'43','Dengji':'差','Pingjiadengji':'','Ceshixiangmumingcheng':'体重'},"
+"'sg':{'Ceshichengji':'体重','Dengji':'差','Pingjiadengji':'5','Ceshixiangmumingcheng':'身高'}}}";
解析代码:
JSONObject job = new JSONObject(s);
System.out.println(job.get("name"));
System.out.println(job.get("xingming"));
JSONObject testData = job.getJSONObject("testData");
JSONArray arr = testData.names();
for (int i = 0; i < arr.length(); i++) {
JSONObject data=testData.getJSONObject((String) arr.get(i));
System.out.print(data.get("Ceshichengji")+"\t");
System.out.print(data.get("Dengji")+"\t");
System.out.print(data.get("Pingjiadengji")+"\t");
System.out.print(data.get("Ceshixiangmumingcheng")+"\t");
System.out.println();
}
s就是你的字符串
后台生成json字符串代码:
List<Test> testList = null;
try {
testList = testService.find(Integer.parseInt(id));
} catch (Exception e) {
error += "未获取列表!";
}
JSONArray testArr = new JSONArray();
for (Test listTest : testList) {
JSONObject jsonType = new JSONObject();
jsonType.put("id", listTest.getId());
jsonType.put("parts", listTest.getParts());
jsonType.put("url", URL+listTest.getUrl());
jsonType.put("playtimes", listTest.getPlayTimes());
jsonType.put("typeId", listTest.getTypeId());
jsonType.put("type", testTypeService.findHigherId(listTest.getTypeId()));
jsonType.put("picUrl", listTest.getPicURL());
if("special".equals(testTypeService.findHigherId(listTest.getTypeId()))){
jsonType.put("lyric", listTest.getLyricUrl());
jsonType.put("lrcJSON", AnalyseLRC.getJSONString(request.getRealPath("/")+listTest.getLyricUrl()));
jsonType.put("backMusicUrl", URL+listTest.getBackMusicURL());
String filePath = request.getRealPath("/")+listTest.getUrl();
jsonType.put("totalTimelong",getTestLength(filePath) );
jsonType.put("totalTime", getTestLengthStr(filePath));
}
testArr.put(jsonType);
}
JSONObject resultJSON = new JSONObject();
TestType testType = testTypeService.findTest(Integer.parseInt(id));
if(testType==null){
resultJSON.put("error", "该视频不存在");
return resultJSON.toString();
}
resultJSON.put("playtimes", testType.getPlayTimes());
resultJSON.put("testName", testType.getTypeName());
resultJSON.put("testBriefing", testType.getBriefing());
resultJSON.put("testList", testArr);
if(UserCollectionService.isExist(mobile, testType.getId())!=null){
resultJSON.put("isCollection", "0");
}else{
resultJSON.put("isCollection", "1");
}
resultJSON.put("error", error);
return resultJSON.toString();
凑合看看吧 、/滑稽、至于jar包你自行百度
http://blog.csdn.net/qq_23126581/article/details/78257373 看看这个你就很清楚了。
前台如果你学过ajax请求的话,里面有个参数是dataType:“json”,传到后台的就是json格式了!后台如果像前台传送json对象的话,你可以创建JSONArray或者JSONObject对象,把要返回的数据放入其中!!而后台springMVC接收数据的话直接request.getParameter("参数的名字")就可以了
前端可以通过jquery序列化成json,后端随便一种json解析工具都可以实现你的功能
同为小白,互相帮助一下
1.前台怎么将数据组织为json数据
最简单的办法就是字符串拼接,比如说把字符串拼接成下面这样
[{"user_name":"zxczxczcz","tel":17615151515,"note":"zxczxcxz"}]
在将该字符串放进EVAL()或者$.parseJSON()里面就可以获得一个JSON数据
2.后台怎么将数据组织为json数据
可以找一下JSONObject/JSONArray的jar包,在放进自己的工程里面,直接
JSONObject obj=new JSONObject();
obj.put(key,value);
就可以了
3.后台怎么接收前台传过来的json数据(springMVC的controller),接收后怎么处理/解析?
一般情况下我觉得ajax比较常见一点,代码如下
$.ajax({
type : "post",
dataType : "json",
url : url,
data : {
JSON:1中的JSON数据
},
success : function(response) {
}
});
data中的放入JSON数据的String格式,也就是JSON.stringify(具体JSON串),就可以按照URL向后台传递数据
后台可以如下
@RequestMapping(value = "url", method = RequestMethod.POST)
@ResponseBody
public String xxx(HttpServletRequest request,
HttpServletResponse response){
String x=request.getParameter("");
//此时x就是JSON串的String格式,再利用JSONObject.fromObject或者JSONArray.fromObject即可获得JSON数据
}
另外好像还有GSON这个工具,但是没怎么用过,就不给你误导了