android中json解析及使用(中)

六、通过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 ;
}
}

接下文
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值