zoukankan      html  css  js  c++  java
  • 操作JSON————精品

    使用背景:

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。 基于现在移动端开发的火爆程度,前后台分离的现状,json数据格式成为调用接口首选的格式,然而网页都是通过jsajax来访问服务端。Js来解析json就成了重点,而服务端处理json也是必需的,既总结了一下前后台对于json的操作。

    JS操作JSON的要领做下总结

    JSON中,有两种结构:对象和数组。

        1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个名称后跟一个“:”(冒号);“‘名称/’ 之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:

        var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"}

        2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。

    例如:Var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":

    "2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];

        为了方便地处理JSON数据,JSON提供了json.js包,下载地址:http://www.json.org/json.js

        在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

        JSON字符串:

        var str1 = '{ "name": "cxh", "sex": "man" }';

        JSON对象:

        var str2 = { "name": "cxh", "sex": "man" };

        一、JSON字符串转换为JSON对象

        要运用上面的str1,必须运用下面的要领先转化为JSON对象:

        //JSON字符串转换为JSON对象

        var obj = eval('(' + str + ')');

    或者 

        var obj = str.parseJSON(); //JSON字符串转换为JSON对象

        或者

        var obj = JSON.parse(str); //JSON字符串转换为JSON对象

        然后,就可以这样读取:

        Alert(obj.name);

        Alert(obj.sex);

        特别留心:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。

        二、可以运用 toJSONString()或者全局要领 JSON.stringify()JSON对象转化为JSON字符串。

        例如:

        var last=obj.toJSONString(); //JSON对象转化为JSON字符

        或者

        var last=JSON.stringify(obj); //JSON对象转化为JSON字符

        alert(last);

        留心:

        上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()parseJSON()要领,则说明您的json包版本太低。

    >>遍历JSON对象

    myJson = {"name":"nikita", "password":"1111"};
    
    for(var p in myJson){//遍历json对象的每个key/value对,p为key
    
       alert(p + " " + myJson[p]);
    
    }

    >>遍历JSON数组

    packJson = [
    
    {"name":"nikita", "password":"1111"},
    
    {"name":"tony", "password":"2222"}
    
    ];
    
    for(var p in packJson){//遍历json数组时,这么写p为索引,0,1
    
       alert(packJson[p].name + " " + packJson[p].password);
    
    }

    我更倾向于这种写法:

    for(var i = 0; i < packJson.length; i++){
    
       alert(packJson[i].name + " " + packJson[i].password);
    
    }

    >>将两个JSON对象组装到一个里面

    //targetJson 目标JSON,packJson 被组装JSON
    
    function addGroupJson(targetJson, packJson){
    
        if(targetJson && packJson){
    
           for(var p in packJson){
    
               targetJson[p] = packJson[p];
    
           }
    
        }
    
    }

    用法如下:

    var json1 = {"name":"nikita"};
    var json2 = {"password":"1111"};
    addGroupJson(json1, json2);
    alert(json2str(json1));

    最后写一个jquery解析json作为结束

    使用jquery解析json:

     $.getJSON("jsonTest",{showNumber:"3"},function(data){     

         $.each(data,function(idx,item){    

         //alert(idx);    

        if(idx<0){    

              return true;//countinue,返回falsebreak

          }     

        alert("attchId:"+item.attchId+",taskName:"+item.attchName);     

     }); 

     }); 

     

    需要引入的包:

     
    1. jakarta commons-lang 2.3   
    2. jakarta commons-beanutils 1.7.0   
    3. jakarta commons-collections 3.2   
    4. jakarta commons-logging 1.1   
    5. ezmorph 1.0.4   
    6. json-lib-2.4-jdk15.jar  
    jakarta commons-lang 2.3 
    jakarta commons-beanutils 1.7.0 
    jakarta commons-collections 3.2 
    jakarta commons-logging 1.1 
    ezmorph 1.0.4 
    json-lib-2.4-jdk15.jar

    Product.java

     
    1. public class Product {  
    2.     private String product;  
    3.   
    4.     private double price;  
    5.   
    6.     private Object item;  
    7.   
    8.   
    9.     public Object getItem() {  
    10.         return item;  
    11.     }  
    12.   
    13.     public void setItem(Object item) {  
    14.         this.item = item;  
    15.     }  
    16.   
    17.     public String getProduct() {  
    18.         return product;  
    19.     }  
    20.   
    21.     public void setProduct(String product) {  
    22.         this.product = product;  
    23.     }  
    24.   
    25.     public double getPrice() {  
    26.         return price;  
    27.     }  
    28.   
    29.     public void setPrice(double price) {  
    30.         this.price = price;  
    31.     }  
    32.   
    33. }  
    public class Product {
    	private String product;
    
    	private double price;
    
    	private Object item;
    
    
    	public Object getItem() {
    		return item;
    	}
    
    	public void setItem(Object item) {
    		this.item = item;
    	}
    
    	public String getProduct() {
    		return product;
    	}
    
    	public void setProduct(String product) {
    		this.product = product;
    	}
    
    	public double getPrice() {
    		return price;
    	}
    
    	public void setPrice(double price) {
    		this.price = price;
    	}
    
    }
    

    JsonUtil.java

     
    1. public class JsonUtil {  
    2.     // {"product":"pencil","price":12,"item":[{"id":1,"name":"chen"}]}  
    3.     private static final String jsoStr = "{"product":"pencil","price":12,"item":[{"id":1,"name":"chen"}]}";  
    4.   
    5.     public static void main(String[] args) throws IOException {  
    6.         // String  
    7.         System.out.println(string4json("key", "20"));  
    8.   
    9.         // obj  
    10.         Product p = (Product) getObject4JsonString(jsoStr, Product.class);  
    11.         System.out.println(p.getProduct() + "," + p.getPrice());  
    12.   
    13.         // map  
    14.         Map map = getMap4Json(jsoStr);  
    15.         for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) {  
    16.             Map.Entry entry = (Map.Entry) iterator.next();  
    17.             System.out.println(entry.getKey() + "," + entry.getValue());  
    18.         }  
    19.   
    20.         // 数组  
    21.         Object[] objects = getStringArray4Json(jsoStr);  
    22.         for (int i = 0; i < objects.length; i++) {  
    23.             System.out.println(objects[i]);  
    24.         }  
    25.     }  
    26.   
    27.     // 将String转换成JSON  
    28.     public static String string4json(String key, String value) throws JSONException {  
    29.         JSONObject object = new JSONObject();  
    30.         object.put(key, value);  
    31.         return object.toString();  
    32.     }  
    33.   
    34.     // 从一个JSON 对象字符格式中得到一个java对象  
    35.     public static Object getObject4JsonString(String jsonString, Class pojoCalss) {  
    36.         Object pojo;  
    37.         JSONObject jsonObject = JSONObject.fromObject(jsonString);  
    38.         pojo = JSONObject.toBean(jsonObject, pojoCalss);  
    39.         return pojo;  
    40.     }  
    41.   
    42.     // 从json 表达式中获取一个map    public static Map getMap4Json(String jsonString) {  
    43.         JSONObject jsonObject = JSONObject.fromObject(jsonString);  
    44.         Iterator keyIter = jsonObject.keys();  
    45.         String key;  
    46.         Object value;  
    47.         Map valueMap = new HashMap();  
    48.         while (keyIter.hasNext()) {  
    49.             key = (String) keyIter.next();  
    50.             value = jsonObject.get(key);  
    51.             valueMap.put(key, value);  
    52.         }  
    53.   
    54.         return valueMap;  
    55.     }  
    56.   
    57.     // 从json对象集合表达式中得到一个java对象列表  
    58.     public static List getList4Json(String jsonString, Class pojoClass) {  
    59.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
    60.         JSONObject jsonObject;  
    61.         Object pojoValue;  
    62.         List list = new ArrayList();  
    63.         for (int i = 0; i < jsonArray.size(); i++) {  
    64.             jsonObject = jsonArray.getJSONObject(i);  
    65.             pojoValue = JSONObject.toBean(jsonObject, pojoClass);  
    66.             list.add(pojoValue);  
    67.   
    68.         }  
    69.         return list;  
    70.   
    71.     }  
    72.   
    73.     // 从json数组中解析出java字符串数组  
    74.     public static Object[] getStringArray4Json(String jsonString) {  
    75.         JSONObject jsonObj = JSONObject.fromObject(jsonString);  
    76.         JSONArray jsonarr = jsonObj.getJSONArray("item");  
    77.         return (Object[]) jsonarr.toArray();  
    78.     }  
  • 相关阅读:
    视图、触发器、事物、存储过程、函数、流程控制
    pymysql
    单表查询与多表查询
    多线程学习(第三天)线程间通信
    多线程学习(第二天)Java内存模型
    多线程学习(第一天)java语言的线程
    springboot集成es7(基于high level client)
    elasticSearch(六)--全文搜索
    elasticSearch(五)--排序
    elasticSearch(四)--结构化查询
  • 原文地址:https://www.cnblogs.com/lulu638/p/4817526.html
Copyright © 2011-2022 走看看