android 的json解析实例

1

public CityWeather getCityWeather(String cityid) throws IOException {
        CityWeather cityWeather=null;
        String weatherJson = dao.getWeatherJson(cityid);
//        System.out.println(weatherJson);
        try {
        // 对json数组进行循环,一般应该只返回一个。
        JSONTokener jsonParser = new JSONTokener(weatherJson);
        JSONObject object = (JSONObject) jsonParser.nextValue();
        // 接下来的就是JSON对象的操作了
        JSONObject weatherday = object.getJSONObject("weatherinfo");
         
        cityWeather = new CityWeather();
        String city = weatherday.get("city").toString();
        String city_en = weatherday.get("city_en").toString();
        String date_y = weatherday.get("date_y").toString();
         
         
        String week1 = getWeekDay(date_y);// 今天周几
        String week2 = getTomorrowWeekDay(date_y);
        String week3 = getAtWeekDay(date_y);
         
        String img1 = weatherday.get("img1").toString();
        String img2 = weatherday.get("img2").toString();
        String img3 = weatherday.get("img3").toString();
        String img4 = weatherday.get("img4").toString();
        String img5 = weatherday.get("img5").toString();
        String img6 = weatherday.get("img6").toString();
 
        String temp1 = weatherday.get("temp1").toString();// 今天温度
        String temp2 = weatherday.get("temp2").toString();// 明天温度
        String temp3 = weatherday.get("temp3").toString();// 后天温度
 
        String weather1 = weatherday.get("weather1").toString();// 今天温度
        String weather2 = weatherday.get("weather2").toString();// 明天温度
        String weather3 = weatherday.get("weather3").toString();// 后天温度
         
        String wind1 = weatherday.get("wind1").toString();//今天风力
        String wind2 = weatherday.get("wind2").toString();//明天风力
        String wind3 = weatherday.get("wind3").toString();//后天风力
         
        //城市共有信息
        cityWeather.setCityname(city);
        cityWeather.setCity_en(city_en);
        cityWeather.setCityid(cityid);
        cityWeather.setDate_y(date_y);
         
        //获得星期
        cityWeather.setToddayWeek(week1);
        cityWeather.setTommorrowWeek(week2);
        cityWeather.setAtWeek(week3);
         
        //获得图片(白天)
        cityWeather.setTodayImg1(img1);
        cityWeather.setTommorrowImg1(img3);
        cityWeather.setAtImg1(img5);
//        System.out.println("img1,img3,img5,"+img1+","+img3+","+img5);
         
        //获得图片(夜间)
        cityWeather.setTodayImg2(img2);
        cityWeather.setTommorrowImg2(img4);
        cityWeather.setAtImg2(img6);
//        System.out.println("img2,img4,img6,"+img2+","+img4+","+img6);
         
        //获得温度
        cityWeather.setTodayTemp(temp1);
        cityWeather.setTommorrowTemp(temp2);
        cityWeather.setAtTemp(temp3);
         
        //获得天气
        cityWeather.setTodayWeather(weather1);
        cityWeather.setTommorrowWeather(weather2);
        cityWeather.setAtWeather(weather3);
         
        //获得风力
        cityWeather.setTodayWind(wind1);
        cityWeather.setTommorrowWind(wind2);
        cityWeather.setAtWind(wind3);
         
        } catch (Exception e) {
            return null;
        }
        return cityWeather;
    }

2

今天学习了一下解析json的知识,把我学习的的一个小例子拿出来和大家分享一下
下面是代码:

  
  
public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); String x; JSONObject obj; try { InputStream is = this .getResources().openRawResource(R.raw.json); byte [] buffer = new byte [is.available()] ; is.read(buffer); TextView v = new TextView( this ); String json = new String(buffer, " utf-8 " ); obj = new JSONObject(json); x = obj.getString( " 姓名 " ); Log.d( " ======姓名======== " ,x); x = obj.getString( " 性别 " ); Log.d( " ======性别======== " ,x); x = obj.getString( " 年龄 " ); Log.d( " ======年龄======== " ,x); JSONObject obj1 = obj.getJSONObject( " 学习成绩 " ); x = obj1.getString( " 数学 " ); Log.d( " ======数学======== " ,x); x = obj1.getString( " 语文 " ); Log.d( " ======语文======== " ,x); x = obj1.getString( " 英语 " ); Log.d( " ======英语======== " ,x); JSONArray array = obj1.getJSONArray( " 综合 " ); obj = array.getJSONObject( 0 ); x = obj.getString( " 文科综合 " ); Log.d( " ======文科综合======== " ,x); obj = array.getJSONObject( 1 ); x = obj.getString( " 理科综合 " ); Log.d( " ======理科综合======== " ,x); JSONStringer s = new JSONStringer(); Log.d( " ====================== " ,s.object().key( " a " ).value( " aaa " ).endObject().toString()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } json文件: { " 姓名 " : " 张三 " , " 性别 " : " " , " 年龄 " : " 22 " , " 学习成绩 " : { " 数学 " : " 60 " , " 语文 " : " 61 " , " 英语 " : " 62 " , " 综合 " : [ { " 文科综合 " : " 100 " }, { " 理科综合 " : " 110 " } ] } }
运行截图:
111.png
3

json数据格式解析我自己分为两种;

一种是普通的,一种是带有数组形式的;


 

普通形式的:
服务器端返回的json数据格式如下:

{
" userbean " :{ " Uid " : " 100196 " , " Showname " : " \u75af\u72c2\u7684\u7334\u5b50 " , " Avtar " : null , " State " : 1 }}

分析代码如下:

//  TODO 状态处理 500 200 
                 int  res  =   0
                res 
=  httpClient.execute(httpPost).getStatusLine().getStatusCode(); 
                
if  (res  ==   200 ) { 
                    
/*  
                     * 当返回码为200时,做处理 
                     * 得到服务器端返回json数据,并做处理 
                     * 
*/  
                    HttpResponse httpResponse 
=  httpClient.execute(httpPost); 
                    StringBuilder builder 
=   new  StringBuilder(); 
                    BufferedReader bufferedReader2 
=   new  BufferedReader( 
                            
new  InputStreamReader(httpResponse.getEntity().getContent())); 
                    String str2 
=   ""
                    
for  (String s  =  bufferedReader2.readLine(); s  !=   null ; s  =  bufferedReader2 
                            .readLine()) { 
                        builder.append(s); 
                    } 
                    Log.i(
" cat " " >>>>>> "   +  builder.toString());

JSONObject jsonObject 
=   new  JSONObject(builder.toString()) 
                        .getJSONObject(
" userbean " ); 

                String Uid; 
                String Showname; 
                String Avtar; 
                String State; 

                Uid 
=  jsonObject.getString( " Uid " ); 
                Showname 
=  jsonObject.getString( " Showname " ); 
                Avtar 
=  jsonObject.getString( " Avtar " ); 
                State 
=  jsonObject.getString( " State " );
带数组形式的:
服务器端返回的数据格式为:

{
" calendar "
    {
" calendarlist "
            [ 
            {
" calendar_id " : " 1705 " , " title " : " (\u4eb2\u5b50)ddssd " , " category_name " : " \u9ed8\u8ba4\u5206\u7c7b " , " showtime " : " 1288927800 " , " endshowtime " : " 1288931400 " , " allDay " : false }, 
            {
" calendar_id " : " 1706 " , " title " : " (\u65c5\u884c) " , " category_name " : " \u9ed8\u8ba4\u5206\u7c7b " , " showtime " : " 1288933200 " , " endshowtime " : " 1288936800 " , " allDay " : false
            ] 
    } 
}

分析代码如下:

//  TODO 状态处理 500 200 
                 int  res  =   0
                res 
=  httpClient.execute(httpPost).getStatusLine().getStatusCode(); 
                
if  (res  ==   200 ) { 
                    
/*  
                     * 当返回码为200时,做处理 
                     * 得到服务器端返回json数据,并做处理 
                     * 
*/  
                    HttpResponse httpResponse 
=  httpClient.execute(httpPost); 
                    StringBuilder builder 
=   new  StringBuilder(); 
                    BufferedReader bufferedReader2 
=   new  BufferedReader( 
                            
new  InputStreamReader(httpResponse.getEntity().getContent())); 
                    String str2 
=   ""
                    
for  (String s  =  bufferedReader2.readLine(); s  !=   null ; s  =  bufferedReader2 
                            .readLine()) { 
                        builder.append(s); 
                    } 
                    Log.i(
" cat " " >>>>>> "   +  builder.toString()); 
                    
/**  
                     * 这里需要分析服务器回传的json格式数据, 
                     
*/  
                    JSONObject jsonObject 
=   new  JSONObject(builder.toString()) 
                            .getJSONObject(
" calendar " ); 
                    JSONArray jsonArray 
=  jsonObject.getJSONArray( " calendarlist " ); 
                    
for ( int  i = 0 ;i < jsonArray.length();i ++ ){ 
                        JSONObject jsonObject2 
=  (JSONObject)jsonArray.opt(i); 
                        CalendarInfo calendarInfo 
=   new  CalendarInfo(); 
                        calendarInfo.setCalendar_id(jsonObject2.getString(
" calendar_id " )); 
                        calendarInfo.setTitle(jsonObject2.getString(
" title " )); 
                        calendarInfo.setCategory_name(jsonObject2.getString(
" category_name " )); 
                        calendarInfo.setShowtime(jsonObject2.getString(
" showtime " )); 
                        calendarInfo.setEndtime(jsonObject2.getString(
" endshowtime " )); 
                        calendarInfo.setAllDay(jsonObject2.getBoolean(
" allDay " )); 
                        calendarInfos.add(calendarInfo); 
                    }

总结,普通形式的只需用JSONObject ,带数组形式的需要使用JSONArray 将其变成一个list。
复制代码






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值