关于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(){ //请求出错处理 } }); }

 

posted on 2017-03-30 13:47  jurryfu  阅读(155)  评论(0)    收藏  举报