操作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方法。可以用於遍歷數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM