android json 解析 简单示例

时间:2024-07-25 16:33:20

1 下面是一个简单的json 解析的demo,废话不多说,直接上代码

package com.sky.gallery;

import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketTimeoutException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class ctivity extends Activity {
    //音乐

private static String GAME_URL = "http://api.k.sohu.com/api/photos/list.go?rt=json&categoryId=2&pageSize=4&p1=NTc1MzY0OTc2NzAxNjA0MjUyMw%3D%3D";

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        
        
        startGetGameListThread();
        
    }

public  void startGetGameListThread() {

new Thread() {

@Override
            public void run() {
                String jsonStr = null;
                int errorCode = 0;

try { // 读取数据 j
                    jsonStr = getGameJsonStr(GAME_URL);
                    Log.i("test", "jsonStr = " + jsonStr);
                    //parseAppList(jsonStr);

} catch (Exception e) {
                    e.printStackTrace();
                    errorCode = 1;
                } finally {

}

}

}.start();
    }

private static String getGameJsonStr(String url) throws Exception {
        Log.i("test", "getGameJsonStr(). url = " + url);

String jsonStr = null;

final HttpParams httpParameters = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParameters, 6000);
        HttpConnectionParams.setSoTimeout(httpParameters, 6000);

final DefaultHttpClient client = new DefaultHttpClient(httpParameters);

final HttpGet get = new HttpGet(url);
        HttpResponse resp;

resp = client.execute(get);
        final HttpEntity entity = resp.getEntity();
        final InputStream is = entity.getContent();
        jsonStr = readToEnd(is);
        is.close();

return jsonStr;
    }

private static String readToEnd(InputStream input) throws IOException,
            SocketTimeoutException {
        final DataInputStream dis = new DataInputStream(input);
        final byte[] stuff = new byte[1024];
        final ByteArrayOutputStream buff = new ByteArrayOutputStream();
        int read = 0;
        while ((read = dis.read(stuff)) != -1) {
            buff.write(stuff, 0, read);
        }

return new String(buff.toByteArray());
    }

private static void log(String msg) {
        Log.v("test", msg);
    }
    private void parseAppList(String jsonStr) throws Exception {
        Log.v("test", "sssssssssssssssssssssssssssssssss");
        try {
            /*
             * final JSONObject root = new JSONObject(jsonStr); Log.i("test",
             * "root = " + root);
             */
         JSONObject oo = new JSONObject(jsonStr);
         JSONArray array = oo.getJSONArray("videos");
            //final JSONArray array = new JSONArray(jsonStr);
            for (int i = 0; i < 20; ++i) {
                //JSONObject obj = array.getJSONObject(i);

AppModle one = addOneGameModel(array.getJSONObject(i));
                Log.i("test", "每一个对象的  "+i+"         "+one.getTitle());
                Log.i("test", "每一个对象的  "+i+"         "+one.getId());
                 Log.i("test", "每一个对象的  "+i+"         "+one.getArtistName());
                
            }

} catch (Exception e) {
            e.printStackTrace();
        }
    }

private static AppModle addOneGameModel(JSONObject game) throws Exception {
        AppModle one = new AppModle();
/*
        one.setId(game.getInt("id"));
        one.setTitle(game.getString("title"));
       one.setArtistName(game.getString("artistName"));*/
        return one;
    }

}