文档章节

使用JSON处理数据(传统)

南栀安
 南栀安
发布于 2017/06/26 17:24
字数 645
阅读 6
收藏 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
0
springMVC笔记系列(22)——Json各类操作在springMVC中的实现

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

HappyBKs
2016/07/07
739
0
fetch 如何请求常见数据格式

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

浪里行舟
06/12
0
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
2.4K
0
JFinal 2.1 发布,用 JFinal 开发,就这么定了!

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

JFinal
2015/12/29
25K
354

没有更多内容

加载失败,请刷新页面

加载更多

Elasticsearch通关教程(五):如何通过SQL查询Elasticsearch

  这篇博文本来是想放在全系列的大概第五、六篇的时候再讲的,毕竟查询是在索引创建、索引文档数据生成和一些基本概念介绍完之后才需要的。当前面的一些知识概念全都讲解完之后再讲解查询是...

SEOwhywhy
9分钟前
0
0
以太坊PHP离线交易开发包

EthTool开发包适用于希望采用裸交易的PHP以太坊应用开发,主要包含以下特性: 支持裸交易部署/调用合约 内置etherscan和infura支持 keystore生成与读取,兼容geth/parity 采用裸交易的一个好...

笔阁
36分钟前
2
0
SRE的含义及与 DevOps 如何关联?

虽然站点可靠性工程师(site reliability engineer SRE)角色在近几年变得流行起来,但是很多人 —— 甚至是软件行业里的 —— 还不知道 SRE 是什么或者 SRE 都干些什么。为了搞清楚这些问题...

linuxCool
37分钟前
1
0
月入3万之一个程序员的转行坎坷历程

陈年往事 “我月入3万,怎么会少少了你一个鸡蛋啊?” 这是2017年9月左右的一个新闻,一位煎饼摊大妈因和顾客争执时脱口而出这样一句话而走红。当时还上了各大新闻的头条。 互联网兴起今天,...

苏南-首席填坑官
59分钟前
3
1
OSChina 周一乱弹 —— 眼看着这颗陨石砸了下来

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享Nachtblut的单曲《Antik》 《Antik》- Nachtblut 手机党少年们想听歌,请使劲儿戳(这里) @mr_chip :上海的初雪之后有点冷 ...

小小编辑
今天
627
10

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部