文档章节

使用JSON处理数据(传统)

南栀安
 南栀安
发布于 2017/06/26 17:24
字数 645
阅读 5
收藏 0
点赞 0
评论 0

一、后台JSON的转换方式

1.List

//List<Map> to Json
List<Map> list = new ArrayList<Map>();
Map<String,String> map = new HashMap<String,String>();
map.put("a", "1");
map.put("b", "2");
map.put("c", "3");
list.add(map);
String json = new Gson().toJson(list);
System.out.println(json);//输出:[{"b":"2","c":"3","a":"1"}]
		
//Json to List<Map> 
List<Map> consNoList = new Gson().fromJson(json, List.class);
System.out.println(consNoList);//输出:[{b=2, c=3, a=1}]

2.Map

//Map to Json
Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
String json = new Gson().toJson(map);ss
System.out.println(json);
//print:{"arr":["a","b"],"int":1,"name":"json","func":function(i){ return this.arr[i]; },"bool":true}

3.Beans

List list = new ArrayList();
JsonBean2 jb1 = new JsonBean2();
jb1.setCol(1);
jb1.setRow(1);
jb1.setValue("xx");
JsonBean2 jb2 = new JsonBean2();
jb2.setCol(2);
jb2.setRow(2);
jb2.setValue("");
list.add(jb1);
list.add(jb2);
JSONArray ja = JSONArray.fromObject(list);

4.一般数据

JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );

二、前台对json值的处理

1.JSON函数

var params = new Object();
params.id=form.id.value;
params.temperature = form.temperature.value;
var param = JSON.stringify(params);	
//print:{"id":"2345","temperature":"12"}

三、前后台json数值传递处理

1.前台塞值---后台取值

1.1前台塞值

function postData(){  
   var json = getValidateResult();
   var data = JSON.stringify(json);
   $.ajax({  
        url: 'task',  
        type: 'post',  
        dataType: 'json',  
        data: data,  //----{"arr":[{"id":"3","result":"333"}]}
        success: function(data){  
            window.location.href="index.jsp?result="+data;  
        },  
        error: function(){  
            alert("error");  
        }  
   });  
}  

function getValidateResult(){
   var json = new Object();
   var jsonArr = new Array();
   for(var i=1;i<tableList.length;i++){
      var res = tableList.get(i);
      var tmpValue = new Object();
      tmpValue.id = id;
      tmpValue.result = res;
      jsonArr.push(tmpValue);
      //alert(JSON.stringify(jsonArr))  -----[{"id":"3","result":"333"}]
   }
   json.arr = jsonArr;
   //alert(JSON.stringify(json)); ---{"arr":[{"id":"3","result":"hen"},{"id":"4","result",ha"}]}
   return json;
}

1.2后台取值

//jsonData-------{"arr":[{"id":"3","result":"hen"},{"id":"4","result",ha"}]}
//相当于后台的如下操作
//List<Map> list = new ArrayList<Map>();
//Map map = new HashMap();
//map.put("id", "3");
//map.put("result", "hen");
//list.add(map);
//map = new HashMap();
//map.put("id", "4");
//map.put("result", "ha");
//list.add(map);
//System.out.println(new Gson().toJson(list));
//输出:[{"id":"3","result":"hen"},{"id":"4","result":"ha"}]

//map = new HashMap<String,String>();
//map.put("arr", list);
//String json = new Gson().toJson(map);
//System.out.println(json);
//输出:{"arr":[{"id":"3","result":"hen"},{"id":"4","result":"ha"}]}

JSONObject json = JSONObject.fromObject(jsonData);  
JSONArray arr = json.getJSONArray("arr"); //前台json对象的属性名
for(int i=0;i<arr.size();i++){//循环遍历json数组
    JSONObject tmpValue = arr.getJSONObject(i);
    System.out.println(tmpValue);  //当第一次遍历时,{"id":"3","result":"hen"}
    System.out.println((String)tmpValue.get("id"));  //3
    System.out.println((String)tmpValue.get("result"));  //hen
}

 

2.后台塞值----前台取值

2.1后台塞值

List<Map> list = new ArrayList<Map>();
Map map = new HashMap();
map.put("id", "3");
map.put("result", "hen");
list.add(map);
map = new HashMap();
map.put("id", "4");
map.put("result", "ha");
list.add(map);
String json = new Gson().toJson(list);
System.out.println(json);//输出:[{"id":"3","result":"hen"},{"id":"4","result":"ha"}]

map = new HashMap<String,String>();
map.put("arr", list);
json = new Gson().toJson(map);
System.out.println(json);//输出:{"arr":[{"id":"3","result":"hen"},{"id":"4","result":"ha"}]}

2.2前台取值

function getJson(){
   var charData = JSON.parse(form.data.value); 
   //----struts的页面form属性值,从后台传入到前台,后期会改
   //data值:{"arr":[{"id":"3","result":"hen"},{"id":"4","result":"ha"}]}
   var jsonArr = new Array();
   jsonArr = charData.arr;
   for(var i=0; i<jsonArr.length; i++){
      alert(jsonArr[i].id); //第一个数值为3
   }
}

 

© 著作权归作者所有

共有 人打赏支持
南栀安
粉丝 1
博文 20
码字总数 5177
作品 0
绍兴
深入了解Struts2返回JSON数据的原理及具体应用范例

JSON建构于两种结构: “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表 ...

goover1001 ⋅ 2014/03/12 ⋅ 0

springMVC笔记系列(22)——Json各类操作在springMVC中的实现

Json使得更多的开发可以在单页面完成,大大改变了如今人们的开发方式,使得前端和后端的分离更加彻底。Json是一种轻量级的数据交换格式。Json与XML格式一样具有良好的结构,但格式更为简洁。...

HappyBKs ⋅ 2016/07/07 ⋅ 0

fetch 如何请求常见数据格式

一 序言 在 传统Ajax 时代,进行 API 等网络请求都是通过 XMLHttpRequest或者封装后的框架进行网络请求,然而配置和调用方式非常混乱,对于刚入门的新手并不友好。今天我们介绍的Fetch提供了一...

浪里行舟 ⋅ 06/12 ⋅ 0

Javascript技巧几则

JavaScript 的成功让人津津乐道,为 Web 网页编写 JavaScript 代码已经是所有 Web 设计师的基本功,这门有趣的语言蕴藏着许多不为人熟知的东西,即使多年的 JavaScript 程序员,也未能完全吃...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

jQuery中的Ajax----02

一、$.getScript()方法 有时候,在页面初次加载时就得所需的全部javascript文件是完全没有必要的。虽然可以在需要哪个javascript文件时,动态地创建<script>标签,jquery代码如下: $(docu...

指尖跳动的精灵 ⋅ 2015/03/09 ⋅ 0

Mysql5.7.9原生JSON格式支持

Mysql5.7.9原生JSON格式支持 创建表 create table news (uid int auto_increment, data json, primary key(uid))engine innodb; 插入数据 insert into news values (NULL,'{"name":"tester",......

xinson ⋅ 2015/10/22 ⋅ 0

那些相见恨晚的 JavaScript 技巧投递人

JavaScript 的成功让人津津乐道,为 Web 网页编写 JavaScript 代码已经是所有 Web 设计师的基本功,这门有趣的语言蕴藏着许多不为人熟知的东西,即使多年的 JavaScript 程序员,也未能完全吃...

科技小毛 ⋅ 2017/10/25 ⋅ 0

JFinal 2.1 发布,用 JFinal 开发,就这么定了!

JFinal 2.1 将带给大家超过60项增强与改进,此次升级核心目的,一是全面解救传统SSH开发者,强力推动这些早已累成狗的工程师转投 JFinal 怀抱,二是与老用户建立更深的情感,答谢你们长久以来...

JFinal ⋅ 2015/12/29 ⋅ 354

[转]那些相见恨晚的 JavaScript 技巧

JavaScript 的成功让人津津乐道,为 Web 网页编写 JavaScript 代码已经是所有 Web 设计师的基本功,这门有趣的语言蕴藏着许多不为人熟知的东西,即使多年的 JavaScript 程序员,也未能完全吃...

浣熊干面包 ⋅ 2013/01/16 ⋅ 0

初步了解SequoiaDB数据库

随着企业中日益复杂与多变的需求,以及迅速扩展带来的海量数据的业务,IT部门需要将越来越多的信息提供给用户,同时在现今的全球经济背景环境下,IT部 门还需要在提供高效服务的同时,降低其...

SequoiaDB2013 ⋅ 2013/09/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20.zip压缩 tar打包 打包并压缩

6月25日任务 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具: zip支持压缩目录 zip压缩完之后原来的文件不删除 不同的文件内容其实压缩的效果不一样 文件内有很多重复的用xz压...

王鑫linux ⋅ 6分钟前 ⋅ 0

double类型数据保留四位小数的另一种思路

来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看。所以要根据小数的...

young_chen ⋅ 13分钟前 ⋅ 0

Python 优化 回溯下降算法

使用sympy构造表达式,实现回溯下降算法 画出函数图像,先使用暴力搜索,找到最小值约为2.5左右 然后选定初始点,开始进行回溯搜索,下降方向为负梯度方向 下降的误差与步数大致呈现下面的状...

阿豪boy ⋅ 17分钟前 ⋅ 0

Django配置163邮箱出现 authentication failed(535)错误解决方法

最近用Django写某网站,当配置163邮箱设置完成后,出现535错误即:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') Django初始配置邮箱设置 EMAIL_HOST = "smtp.1...

陈墨轩_CJX ⋅ 19分钟前 ⋅ 0

用接口模拟可伸缩枚举(34)

1、枚举的可伸缩性最后证明都不是什么好点子 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱 目前还没有很好的方法来枚举基本类型的所有元素,及其扩展 可伸缩性...

职业搬砖20年 ⋅ 22分钟前 ⋅ 0

Ubuntu18.04 IDEA快捷键无法使用

IDEA默认的回退到上一视图的快捷键是Ctrl + Alt + Left,在ubuntu中这个快捷键被占用了,在16.04中可以在界面中取消这个快捷键,但是18.04就看不到了,可以使用以下命令解决 gsettings set ...

Iceberg_XTY ⋅ 27分钟前 ⋅ 0

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 39分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 58分钟前 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 今天 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部