关于json:
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率
1.标准josn数据格式
JSON字符串:特殊字符可在字符前面加 \ 或使用 \u 加 4位16进制数来处理
{"name":"jobs"}
JSON布尔:必须小写的true和false
{"bool":true}
JSON空:必须小写的null
{"object":null}
JSON对象
//单个
{
"starcraft": {
"INC": "Blizzard",
"price": 60
}
}
//多个
{
"data1":{
"INC":"Blizzard",
"price":60
},
"data2":{
"INC":"Blizzard",
"price":60
}
}
使用场景:适合用于表单对象,每一行的字段是一致的,只是值不同
JSON数组
//单个
{
"person": [
"jobs",
60
]
}
//多个
{
"sleep":[
"晚上",
"9点睡"
],
"eat":[
"早上",
"8点吃"
]
}
使用场景:单个对象,有多种不同的属性
JSON对象数组
{
"man":[
{
"sex":"男"
},
{
"爱好":"体育",
"特长":"跑"
}
],
"woman":[
{
"sex":"女"
},
{
"爱好":"吃",
"特长":"生孩子"
}
]
}
使用场景:多对象,多属性。
后台:
1.功能类,采用字符串拼接的方式返回json 数据格式的数据
1.1 单个json对象
/**
* josnObject 返回单个josn对象
* @param object 数据头
* @param map 数据集合
* @return
*/
public static String getJosnObject( Map<String,String> map)
{
String data="{";
for (Iterator it = map.keySet().iterator();it.hasNext();)
{
String key = (String) it.next();
String a= map.get(key);
if (it.hasNext())
{
data=data+"\""+key+"\":\""+a+"\",";
}
else
{
data=data+"\""+key+"\":\""+a+"\"";
}
}
data=data+"}";
return data;
}
测试类
@Test
public void t1()
{
Map<String,String> map = new LinkedHashMap<String,String>();
map.put("语文" , "22");
map.put("数学" , "3");
map.put("英语" ,"3");
String key = DataHandle.getJosnObject(map);
System.out.println(key);
}
输出结果:
{"语文":"22","数学":"3","英语":"3"}
1.2 多个json对象
/**
* josnObject 返回多个josn对象
* @param datas 数据集合
* @return
*/
public static String getJosnObjects( List<HashMap<String, String>> datas)
{
// 返回的josn格式数据
String data="{";
for (int i = 0; i < datas.size(); i++)
{
// 数据头自动生成,一次为 0 1 2.。。
data=data+"\""+i+"\":{";
// 获得对象的行数,决定由几个数据头
for (Iterator it = datas.get(i).keySet().iterator();it.hasNext();)
{
// 获得指定行的键 及键值
String key = (String) it.next();
String a= datas.get(i).get(key);
if (it.hasNext())
{
// 如果不是该行的最后一个数据,那么后面加逗号{
data=data+"\""+key+"\":\""+a+"\",";
}
else
{
if (i!=(datas.size()-1))
{
// 如果是该行的最后一个数据,且不是所有数据行最后的,那么后面加}及逗号
data=data+"\""+key+"\":\""+a+"\"},";
}
else {
// 如果是该行的最后一个数据,且是所有数据行最后的,那么后面加}
data=data+"\""+key+"\":\""+a+"\"}";
}
}
}
}
data=data+"}";
return data;
}
测试类: 本次测试的数据是从数据库读的,读者自己可准备数据
@Test
public void t2()
{
ConnectMySQL mysql= new ConnectMySQL();
mysql.connect("localhost:3306/Config", "root", "root");
List<HashMap<String, String>> rs =mysql.getSqlResault("SELECT * from authorization ",true);
String aString=DataHandle.getJosnObjects(rs);
System.out.println(aString);
}
测试结果:
{
"0":{
"xiaoyingtestcase":"0",
"xiaoyingreport":"0",
"xiaoyingpolicy":"0",
"user":"fujiaxi",
"xiaoying":"0"
},
"1":{
"xiaoyingtestcase":"0",
"xiaoyingreport":"0",
"xiaoyingpolicy":"0",
"user":"hj",
"xiaoying":"0"
},
"2":{
"xiaoyingtestcase":"0",
"xiaoyingreport":"0",
"xiaoyingpolicy":"0",
"user":"wang",
"xiaoying":"0"
}
}
1.3 josn 数组对象
功能类:
/**
* josnObject 返回多个josn 数组对象
* @param datas 数据集合
* @return
*/
public static String getJosnObjectArry( List<HashMap<String, String>> datas)
{
// 返回的josn格式数据
String data="[";
for (int i = 0; i < datas.size(); i++)
{
// 数据头自动生成,一次为 0 1 2.。。
data=data+"{";
// 获得对象的行数,决定由几个数据头
for (Iterator it = datas.get(i).keySet().iterator();it.hasNext();)
{
// 获得指定行的键 及键值
String key = (String) it.next();
String a= datas.get(i).get(key);
if (it.hasNext())
{
// 如果不是该行的最后一个数据,那么后面加逗号{
data=data+"\""+key+"\":\""+a+"\",";
}
else
{
if (i!=(datas.size()-1))
{
// 如果是该行的最后一个数据,且不是所有数据行最后的,那么后面加}及逗号
data=data+"\""+key+"\":\""+a+"\"},";
}
else {
// 如果是该行的最后一个数据,且是所有数据行最后的,那么后面加}
data=data+"\""+key+"\":\""+a+"\"}";
}
}
}
}
data=data+"]";
return data;
}
测试类
@Test
public void t2()
{
ConnectMySQL mysql= new ConnectMySQL();
mysql.connect("localhost:3306/Config", "root", "root");
List<HashMap<String, String>> rs =mysql.getSqlResault("SELECT * from authorization ",true);
String aString=DataHandle.getJosnObjectArry(rs);
System.out.println(aString);
}
测试结果:
[
{
"xiaoyingtestcase":"0",
"xiaoyingreport":"0",
"xiaoyingpolicy":"0",
"user":"fujiaxi",
"xiaoying":"0"
},
{
"xiaoyingtestcase":"0",
"xiaoyingreport":"0",
"xiaoyingpolicy":"0",
"user":"hj",
"xiaoying":"0"
},
{
"xiaoyingtestcase":"0",
"xiaoyingreport":"0",
"xiaoyingpolicy":"0",
"user":"wang",
"xiaoying":"0"
}
]
2.前段处理
一行json数据
var path="{\"xiaoyingtestcase\":\"0\",\"user\":\"fujiaxi\"}";
var chartObj =JSON.parse(path);
alert(chartObj.user);
2.1 生成json 对象并解析
var json = [ {"id":"1","tagName":"apple"}, {"id":"2","tagName":"orange"}, {"id":"3","tagName":"banana"}, {"id":"4","tagName":"watermelon"}, {"id":"5","tagName":"pineapple"} ]; $.each(json, function(i, obj) { alert(obj.tagName); });
2.2 字符串转化成json 解析
var json = '[
{"id":"1","tagName":"apple"},
{"id":"2","tagName":"orange"},
{"id":"3","tagName":"banana"},
{"id":"4","tagName":"watermelon"},
{"id":"5","tagName":"pineapple"}
]';
$.each(JSON.parse(json), function(i, obj) {
alert(obj.tagName);
});
//or
$.each($.parseJSON(json), function(i, obj) {
alert(obj.tagName);
});
也可以是对象
var json = {
"0":{
"xiaoyingtestcase":"0",
"xiaoyingreport":"0",
"xiaoyingpolicy":"0",
"user":"fujiaxi",
"xiaoying":"0"
},
"1":{
"xiaoyingtestcase":"0",
"xiaoyingreport":"0",
"xiaoyingpolicy":"0",
"user":"hj",
"xiaoying":"0"
},
"2":{
"xiaoyingtestcase":"0",
"xiaoyingreport":"0",
"xiaoyingpolicy":"0",
"user":"wang",
"xiaoying":"0"
}
};
$.each(json, function(i, obj) {
alert(obj.xiaoying);
});
数组遍历
var data=[{name:"a",age:12},{name:"b",age:11},{name:"c",age:13},{name:"d",age:14}];
// data= XMLHttpRequest.responseText;
for(var o in data)
{
alert("text:"+data[o].name+" value:"+data[o].age );
}
常用遍历
var json2={"name":"txt1","name2":"txt2"};
for(var js2 in json2)
{
alert( js2 + "=" + json2[js2]);
}
3 前后台交互 使用jqury
var GetMenu=function ()
{
/* body... */
$.ajax({
//提交数据的类型 POST GET
type:"POST",
//提交的网址
url:"http://127.0.0.1:8081/autotestcloud/GetMenu",
//提交的数据
//返回数据的格式
datatype: "json",//"xml", "html", "script", "json", "jsonp", "text".
//在请求之前调用的函数
beforeSend:function()
{
},
//成功返回之后调用的函数
success:function(data){
} ,
//调用执行后调用的函数
complete: function(XMLHttpRequest, textStatus)
{
// 获取返回数据
alert(XMLHttpRequest.responseText);
var json2=XMLHttpRequest.responseText;
json2=JSON.parse(json2);
// 打印指定键值
alert(json2.user);
// 遍历数据
for(var js2 in json2)
{
alert( js2 + "=" + json2[js2]);
}
},
//调用出错执行的函数
error: function(){
//请求出错处理
}
});
}

浙公网安备 33010602011771号