zoukankan      html  css  js  c++  java
  • JSon解析

    1.解析总是犯糊涂

    在图中,[]  中括号表示是jsonarray,{} 小括号 表示对象  这个解析可以写成:

       JSONArray array=new JSONArray(result);
                for(int i=0;i<array.length();i++){
                    JSONObject object=array.getJSONObject(i);
                    String id=object.optString("id");
                    String name=object.optString("name");
                    String deviceId=object.optString("deviceId");
                    String status=object.optString("status");
                    String lat=object.optString("lat");
                    String lng=object.optString("lng");
                    String antN=object.optString("antN");
                    String gsmN=object.optString("gsmN");
                    String gsmB=object.optString("gsmB");
                    String tdN=object.optString("tdN");
                    String tdB=object.optString("tdB");
                    String lteN=object.optString("lteN");
                    String lteB=object.optString("lteB");
                 
    
            
                }

    2.

       JSONObject jsonObject=new JSONObject(s);
                JSONArray jsonArray=jsonObject.getJSONArray("rows");
                for(int i=0;i<jsonArray.length();i++){
                    JSONObject jsonObject1=jsonArray.getJSONObject(i);
                    String id=jsonObject1.getString("id");
              
                   .....
        
       
        
                }    

     3.由于某些字段的缺失, jsonObject.getString("key")会导致解析失败,这时获取字段value可以用  jsonObject.optString("key")。即使没有该字段,解析容错,扔可以通过。

    4.

    如图上面的第一个箭头: 集合下面直接是字符串,仍然可按照是对象方法解析,然后转成字符串。

                 JSONObject  obj=new JSONObject(s);
                JSONObject obj1=obj.optJSONObject("result");
                JSONObject obj2=obj1.optJSONObject("data");
                JSONObject obj3=obj2.optJSONObject("life");
                JSONObject obj4=obj3.optJSONObject("info");
                JSONArray array=obj4.optJSONArray("chuanyi");
                String s_1=array.optString(0).toString();
                String s_2=array.optString(1).toString();
              

    5.

    实体类可写成:

    public class Root {
    
        private Info info;
    
        public void setInfo(Info info) {
            this.info = info;
        }
    
        public Info getInfo() {
            return this.info;
        }
    
        /**
         * info
         */
        public class Info {
            private List<String> chuanyi;
    
            public void setString(List<String> chuanyi) {
                this.chuanyi = chuanyi;
            }
            public List<String> getString(){
                return this.chuanyi;
            }
    
        }
    }

     ss为数据字符串  解析为:

            Gson gson=new Gson();
                Root root=gson.fromJson(ss,Root.class);
                Root.Info info=root.getInfo();
                List<String> data=info.getString();
                for(int i=0;i<data.size();i++){
                    Log.d(TAG, "GSON: "+data.get(i).toString());
    
                }

     6.GSon使用

    图上的 code,list,obj,msg;必须要在实体类中对应。其obj的对象名无所谓,List集合中的对象名称无所谓。

    今天多一点积累,明天少一分烦恼
  • 相关阅读:
    $_ENV 为空的原因
    Android-自动完成提示框CompletionTextView
    Android-Spinner下拉列表
    Android-自定义进度条
    Android-自定义RadioButton
    Android-原生对话框
    Android-Style样式
    Android-ListView-(BaseAdapter使用)
    Android-ListView-(BaseAdapter初步)
    Android-ListView-SimpleAdapter
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/6202582.html
Copyright © 2011-2022 走看看