android中json解析及使用(中)

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
六、通过JSONObject与JSONArray来解析json
我们可以通过JSONObject与 JSONArray 的getInt,getString,getDouble,getJSONArray,getJSONObject等函数来解析json.
以下是一个通过网络取得json文本,然后解析的示例。
示例3
 
   

    public AppGuessResponse getAppListFromHttp ( Context mContext )
    {
        String url = "http://10.158.166.110:8080/AndroidServer/JsonServlet" ;
        AppGuessResponse res = new AppGuessResponse ();
        try
        {
            HttpReturn ret = getDataFromHttp ( url );
            if ( ret . getCode () == HttpStatus . SC_OK )
            {
                res . parseFrom ( ret . getBody ());
            }
        } catch ( Exception e )
        {
            Log . e ( tag , "" , e );
        }
        return res ;
    }
    public HttpReturn getDataFromHttp ( String url )     {         /* HttpGet对象*/         HttpGet httpRequest = new HttpGet ( url );         int code = - 1 ;         try         {             /* HttpClient对象*/             HttpClient httpClient = new DefaultHttpClient ();             /* 获得HttpResponse对象*/             HttpResponse httpResponse = httpClient . execute ( httpRequest );             code = httpResponse . getStatusLine (). getStatusCode ();             if ( code == HttpStatus . SC_OK )             {                 // 取得返回的数据                 byte bytes [] = EntityUtils                         . toByteArray ( httpResponse . getEntity ());                 return new BaseHttpReturn ( code , bytes );             } else             {                 return new BaseHttpReturn ( code );             }         } catch ( ClientProtocolException e )         {             e . printStackTrace ();         } catch ( IOException e )         {             e . printStackTrace ();         }         return new BaseHttpReturn ( code );     }

 
    

interface HttpReturn
{
    int getCode ();
    byte [] getBody ();
}

 
    

class BaseHttpReturn implements HttpReturn
{
    final int code ;
    final byte body [];
    BaseHttpReturn ( int code )
    {
        this . code = code ;
        this . body = null ;
    }
    BaseHttpReturn ( int code , byte bytes [])
    {
        this . code = code ;
        this . body = bytes ;
    }
    @Override
    public int getCode ()
    {
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public byte [] getBody ()
    {
        // TODO Auto-generated method stub
        return null;
    }
}

 
    

interface ResponseParse
{
    public void parseFrom ( byte [] bytes );
    public void parseFrom ( String str );
}


 
    

class Application
{
    String name ;
    String packageName ;
    String version ;
    int versionCode ;
    double price ;
    long size ;
    long downloadCount ;
    public long getDownloadCount ()
    {
        return downloadCount ;
    }
    public void setDownloadCount ( long downloadCount )
    {
        this . downloadCount = downloadCount ;
    }
    public long getSize ()
    {
        return size ;
    }
    public void setSize ( long size )
    {
        this . size = size ;
    }
    public String getName ()
    {
        return name ;
    }
    public void setName ( String name )
    {
        this . name = name ;
    }
    public String getPackageName ()
    {
        return packageName ;
    }
    public void setPackageName ( String packageName )
    {
        this . packageName = packageName ;
    }
    public String getVersion ()
    {
        return version ;
    }
    public void setVersion ( String version )
    {
        this . version = version ;
    }
    public int getVersionCode ()
    {
        return versionCode ;
    }
    public void setVersionCode ( int versionCode )
    {
        this . versionCode = versionCode ;
    }
    public double getPrice ()
    {
        return price ;
    }
    public void setPrice ( double price )
    {
        this . price = price ;
    }
}

 
    

class AppGuessResponse implements ResponseParse
{
    private List < Application > mApplications = new ArrayList < Application >();
    private boolean mIsFinish = false ;
    private boolean mIsSuccess = false ;
    private int allCount = 0 ;
    private Date expireDate = new Date ( System . currentTimeMillis () + 24 * 60
            * 60 * 1000 );
    public Date getExpireDate ()
    {
        return expireDate ;
    }
    public void setExpireDate ( Date expireDate )
    {
        this . expireDate = expireDate ;
    }
    public int getAllCount ()
    {
        return allCount ;
    }
    public void setAllCount ( int allCount )
    {
        this . allCount = allCount ;
    }
    public boolean getIsSuccess ()
    {
        return mIsSuccess ;
    }
    public Application getApplicationItem ( int i )
    {
        return mApplications . get ( i );
    }
    public int getApplicationItemCount ()
    {
        return mApplications . size ();
    }
    public List < Application > getApplicationItemList ()
    {
        return mApplications ;
    }
    public boolean isFinish ()
    {
        return mIsFinish ;
    }
    @Override
    public void parseFrom ( byte [] bytes )
    {
        // TODO Auto-generated method stub
    }
    @Override
    public void parseFrom ( String strJson )
    {
        try
        {
            JSONObject jsonObject = new JSONObject ( strJson );
            if ( jsonObject . has ( "endpage" ))
            {
                mIsFinish = jsonObject . getInt ( "endpage" ) == 0 ? true : false ;
            } else
            {
                mIsFinish = false ;
            }
            if ( jsonObject . has ( "allcount" ))
            {
                allCount = jsonObject . getInt ( "allcount" );
            }
            if ( jsonObject . has ( "list" ))
            {
                JSONArray jsonArray = jsonObject . getJSONArray ( "list" );
                if ( jsonArray . length () != 0 )
                {
                    for ( int i = 0 ; i < jsonArray . length (); i ++)
                    {
                        JSONObject jsonObject2 = jsonArray . getJSONObject ( i );
                        Application app = new Application ();
                        app . setName ( jsonObject2 . getString ( "name" ));
                        app . setPackageName ( jsonObject2 . getString ( "packageName" ));
                        app . setSize ( jsonObject2 . getLong ( "size" ));
                        app . setPrice ( jsonObject2 . optDouble ( "price" , 0.0 ));
                        app . setVersion ( jsonObject2 . getString ( "version" ));
                        app . setVersionCode ( jsonObject2 . getInt ( "versioncode" ));
                        if ( jsonObject2 . has ( "downloadCount" ))
                        {
                            app . setDownloadCount ( jsonObject2 . optLong (
                                    "downloadCount" , 0 ));
                        }
                        mApplications . add ( app );
                    }
                }
            }
            mIsSuccess = true ;
        } catch ( JSONException e )
        {
            mIsSuccess = false ;
        }
    }

接下文           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值