操作Json和Json数组的一些基本方法

 对于json嵌套,只要记住符号“:”前是键,符号后是值大括号成对找,一层层剥开,就清楚了。 举个例子说明,如下:

 

     从外到里看,例子中就是一个数组,数组里面是两个json格式的字符串。这样分析思路就清晰多了。

 

     工作中需要取出name4的值,你们会怎么取呢?。

     最初我都想过字符串截取,那时还不了解JSONArray,现在知道了,取出来也就相当容易了。

取出name4值过程步骤: 1,将以上字符串转换为JSONArray对象;

                   2,取出对象的第一项,JSONObject对象;

                   3,取出name1的值JSONObject对象;

                   4,取出name2的值JSONObject对象;

                   5,取出name4的值value2。

示例中json数组格式的字符串可以通过方法直接转换为JSONArray的格式:JSONArray.fromObject(String)

<pre name="code" class="java">JSONArray getJsonArray=JSONArray.fromObject(arrayStr);//将结果转换成JSONArray对象的形式
JSONObject getJsonObj = getJsonArray.getJSONObject(0);//获取json数组中的第一项
String result=getJsonObj.getJSONObject("name1").getJSONObject("name2").getJSONObject("name4");
</pre>

定义一个json对象

     1、直接定义

1)、属性值为常量:
       var jsonObj={userId:'001'}; //字段可以不用也可用引号引起来,但字符串值必须用引号(单引号和双引号都行)
2)、属性值为Json对象:
       var jsonObj={id:{userId:'001',sex:'男'},id1:{userId:'002',sex:'女'}};

        2、由字符串转换

var jsonStr="{\"userId\":\"001\"}";//字段和字符串值必须用双引号引起,单引号都不行
var jsonObj=JSON.parse(jsonStr);//字符串转json对象       

        3、由字符串转换      

        jsonObj.name='李明';
或者:jsonObj['name']='李明';
结果:{serId:"001",name:'李明'}   

         4、循环访问json对象属性

   var jsonObj={id:{userId:'001',sex:'男'},id1:'002'};                
            
for
(var field in jsonObj) { alert(field);//依次输出Id和Id1; alert(jsonObj[field].userId) //针对第一次循环,输出:001【第一个属性值为json对象,要通过属性值的属性访问】 alert(jsonObj[field]);//针对第二次循环,输出:002【第二个属性值为简单常量,直接输出即可】 }

定义一个json数组

var josnArry=[];

          1、添加json对象元素:

    jsonArry.push(jsonObj);

          2、删除元素           

 1)、delete jsonArry[0];
        删除指定位置元素。注意:不直接直接删除,而是用null项取代。数组长度不变
        结果:[ null],此时jsonArry[0]的值为undefined,后续访问数组时要考虑删除后的元素的特殊情况               
 2)、splice(index,length):
         删除指定位置开始指定个数的项和delete区别:
         1、splice直接清空指定项,数组长度减小。而delete 只是用null项取代原有项
 2、splice可以一次性删除多项。而delete职能删除一项

        3、循环访问数组

1、Jquery方式
       $.each(jsonArry,function(index,item){
            var userId=item.userId;          
         });

2、一般js方法
      for(var i=0;i<jsonArry.length;i++)
          {
             var userId=jsonArry[i].userId;  
         }
3、特殊方法(类似方法2)
      for(var item in jsonArry)
          { 
        var userId=jsonArry[item].userId;//注意:此处的item不是数组项,而是数组项的索引
      }

字符串和json对象和json对象数组相互转换

 var jsonStr="{\"userId\":\"001\"}";
 var jsonArry="[{\"userId\":\"001\"},{\"userId\":\"002\"}]";

       1、字符串转json对象或json对象数组  

var jsonObj=JSON.parse(jsonStr);//将字符串转化成json对象
var jsonArry=JSON.parse(jsonArry);//将字符串转化成json对象数组

       2、json对象或json对象数组转字符串

 var jsonStr=JSON.stringify(jsonObj);// json对象转为字符串
 var jsonArryStr=JSON.stringify(jsonArry);// json数组转为字符串

 打印结果:

alert(jsonStr);
alert(jsonArryStr);
alert(jsonObj.userId);
alert(jsonArry[0]['userId']);

1,JSONObject

json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value}

2,JSONArray

 json数组,使用中括号[ ],只不过数组里面的项也是json键值对格式的

  Json对象中添加的是键值对,JSONArray中添加的是Json对象

JSONObject Json = new JSONObject();
JSONArray JsonArray = new JSONArray();

Json.put("key", "value");//JSONObject对象中添加键值对
JsonArray.add(Json);//将JSONObject对象添加到Json数组中

   总结:

    JSONObject与Map

Map<String,String> strmap=new JSONObject();  

    Map map和json都是键值对,不同的是map中键值对中间用等号分开,json中键值对中间用冒号分开。其实json就是一种特殊形式的map。

    只有数组或者json数组才可以使用length方法。json对象使用length方法无效。

    如果json对象的子元素是数组或者json数组,也可以使用length方法。可以用于遍历数据。

posted @ 2018-03-21 18:18  LXQLCCC  Views(10524)  Comments(0Edit  收藏  举报