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
- Newtonsoft.Json解析json数据
- 使用Json解析Json数据
- JavaScript 解析 JSON 数据
- JavaScript 解析 JSON 数据
- JAVA解析json数据
- jquery解析json数据
- jquery解析json数据
- android---Json数据解析
- Android Json 数据解析
- jquery解析json数据
- Gson解析Json数据
- json 的数据解析
- Android解析json数据
- Java解析JSON数据
- Jquery解析json数据
- eval 解析 json 数据
- 解析JSON数据
- JSON 数据解析
- Android通用UI开发技术(1)
- Jdbc 批处理
- CGContextAddArcToPoint
- 主动与被动的找现在不是最需要的书,但有价值的书
- 时间类
- JSON数据解析
- 进程
- Scala中的yield用法
- Redis数据类型和抽象
- 链路层
- 第一行代码笔记4(UI)
- 聊天工具
- pointer on C_2 基本数据类型 指针 const
- 协议栈