JSON数据解析

来源:互联网 发布:windows监控文件变化 编辑:程序博客网 时间:2024/06/06 17:57

生成JSON数据的源码:http://download.csdn.net/detail/chexitianxia/9137419

客户端activity_main.xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent" >    <Button        android:id="@+id/person"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="解析person数据" /> <Button        android:id="@+id/persons"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="解析List嵌套person数据" /> <Button        android:id="@+id/liststring"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="解析List嵌套String数据" /> <Button        android:id="@+id/listmap"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="解析listmap数据" /></LinearLayout>
Main.java

public class Main extends Activity implements OnClickListener{private Button person,persons,liststring,listmap;private static final String TAG="Main";    @Override    public void onCreate(Bundle savedInstanceState) {    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()               .detectDiskReads()               .detectDiskWrites()               .detectNetwork()   // 这里可以替换为detectAll() 就包括了磁盘读写和网络I/O               .penaltyLog()     //打印logcat,当然也可以定位到dropbox,通过文件保存相应的log          .build());               StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()               .detectLeakedSqlLiteObjects() //探测SQLite数据库操作           .penaltyLog()       //打印logcat        .penaltyDeath()               .build());         super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        person = (Button)this.findViewById(R.id.person);        persons = (Button)this.findViewById(R.id.persons);        liststring = (Button)this.findViewById(R.id.liststring);        listmap = (Button)this.findViewById(R.id.listmap);        person.setOnClickListener(this);        persons.setOnClickListener(this);        liststring.setOnClickListener(this);        listmap.setOnClickListener(this);               }    @Override    public void onClick(View v) {    // TODO Auto-generated method stub    switch (v.getId()) {case R.id.person:String path="http://192.168.1.103:8080/jsonProject/servlet/JsonAction?action_flag=person";String jsonString = HttpUtils.getJsonContent(path);Person person = JsonTools.getPerson("person", jsonString);Log.i(TAG,person.toString());break;case R.id.persons:String path2="http://192.168.1.103:8080/jsonProject/servlet/JsonAction?action_flag=persons";String jsonString2 = HttpUtils.getJsonContent(path2);List<Person> list2 = JsonTools.getPersons("persons", jsonString2);Log.i(TAG,list2.toString());break;case R.id.liststring:String path3="http://192.168.1.103:8080/jsonProject/servlet/JsonAction?action_flag=liststring";String jsonString3 = HttpUtils.getJsonContent(path3);List<String> list3 = JsonTools.getList("liststring", jsonString3);Log.i(TAG,list3.toString());break;case R.id.listmap:String path4="http://192.168.1.103:8080/jsonProject/servlet/JsonAction?action_flag=listmap";String jsonString4 = HttpUtils.getJsonContent(path4);List<Map<String, Object>> list4 = JsonTools.listKeyMaps("listmap", jsonString4);Log.i(TAG,list4.toString());break;}    }}


HttpUtils.java

public class HttpUtils {private static final String TAG = "Main";public HttpUtils() {// TODO Auto-generated constructor stub}public static String getJsonContent(String url_path) {try {URL url = new URL(url_path);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setConnectTimeout(3000);connection.setRequestMethod("GET");connection.setDoInput(true);int code = connection.getResponseCode();if (code == 200) {return changeInputStream(connection.getInputStream());}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}return "";}private static String changeInputStream(InputStream inputStream) {// TODO Auto-generated method stubString jsonString = "";ByteArrayOutputStream outputStream = new ByteArrayOutputStream();int len = 0;byte[] data = new byte[1024];try {while ((len = inputStream.read(data)) != -1) {outputStream.write(data, 0, len);}jsonString = new String(outputStream.toByteArray());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return jsonString;}}

Person.java

public class Person {private int id;private String name;private String address;@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", address=" + address+ "]";}public Person() {// TODO Auto-generated constructor stub}public int getId() {return id;}public void setId(int id) {this.id = id;}public Person(int id, String name, String address) {super();this.id = id;this.name = name;this.address = address;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}

JsonTools.java

public class JsonTools {public JsonTools() {// TODO Auto-generated constructor stub}public static Person getPerson(String key,String jsonString){Person person = new Person();try {JSONObject jsonObject = new JSONObject(jsonString);JSONObject personObject = jsonObject.getJSONObject("person");person.setId(personObject.getInt("id"));person.setName(personObject.getString("name"));person.setAddress(personObject.getString("address"));} catch (Exception e) {// TODO: handle exception}return person;}public static List<Person> getPersons(String key,String jsonString){List<Person> list = new ArrayList<Person>();try {JSONObject jsonObject = new JSONObject(jsonString);//返回json的数组JSONArray jsonArray = jsonObject.getJSONArray(key);for(int i=0;i<jsonArray.length();i++){JSONObject jsonObject2 = jsonArray.getJSONObject(i);Person person = new Person();person.setId(jsonObject2.getInt("id"));person.setName(jsonObject2.getString("name"));person.setAddress(jsonObject2.getString("address"));list.add(person);}} catch (Exception e) {// TODO: handle exception}return list;}public static List<String> getList(String key,String jsonString){List<String> list = new ArrayList<String>();try {JSONObject jsonObject = new JSONObject(jsonString);JSONArray jsonArray = jsonObject.getJSONArray(key);for (int i=0;i<jsonArray.length();i++){String msg =jsonArray.getString(i);list.add(msg);}} catch (Exception e) {// TODO: handle exception}return list;}public static List<Map<String,Object>> listKeyMaps(String key,String jsonString){List<Map<String,Object>> list =  new ArrayList<Map<String,Object>>();try {JSONObject jsonObject = new JSONObject(jsonString);JSONArray jsonArray = jsonObject.getJSONArray(key);for(int i=0;i<jsonArray.length();i++){JSONObject jsonObject2 = jsonArray.getJSONObject(i);Map<String,Object> map = new HashMap<String, Object>();Iterator<String> iterator =jsonObject2.keys();while(iterator.hasNext()){String json_key = iterator.next();Object json_value = jsonObject2.get(json_key);if(json_value == null){json_value = "";}map.put(json_key, json_value);}list.add(map);}} catch (Exception e) {// TODO: handle exception}return list;}} 

0 0