解析网络Json文件:
本Demo的Json文件放在Tomcat的ROOT目录下,
首先,写个简单的布局文件:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent" android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.asus.android_30_parsejson.MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="解析Json"
android:onClick="parseJson"
/>
</RelativeLayout>
其次,在MainActivity中进行解析
注:Gson解析需下载com.google.code.gson:gson:2.8.0架包
FastJson需下载fastjson-1.2.3.jar
否则不可以使用
package com.asus.android_30_parsejson;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void parseJson(View view){
new MyTask().execute();
}
class MyTask extends AsyncTask{
@Override
protected Object doInBackground(Object[] params) {
//获取网络Json
try { //http://192.168.43.231:8080/
URL url=new URL(getString(R.string.server_name)+"persons.json");
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
//设置请求方式
connection.setRequestMethod("GET");
//网络请求超时
connection.setConnectTimeout(5000);
//获取结果码
int code=connection.getResponseCode();
if (code==200){
InputStream is=connection.getInputStream();
//测试
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String str=null;
StringBuffer stringBuffer=new StringBuffer();
while((str=br.readLine())!=null){
stringBuffer.append(str);
}
Log.i("test",stringBuffer.toString());
//开始解析
//1.使用原生态解析
// JSONObject jsonObject=new JSONObject(stringBuffer.toString());
// int list=jsonObject.getInt("list");
// Log.i("test","长度:"+list);
//
// JSONArray jsonArray=jsonObject.getJSONArray("persons");
//
// for (int i = 0; i <jsonArray.length() ; i++) {
// JSONObject object=jsonArray.getJSONObject(i);
// int pid=object.getInt("id");
// String pname=object.getString("name");
// int page=object.getInt("age");
// Log.i("test",pid+" "+pname+" "+page);
// }
//2.使用Gson解析Json
Gson gson=new Gson();
BigPerson bigPerson=gson.fromJson(stringBuffer.toString(),BigPerson.class);
Log.i("test",bigPerson.getList()+"");
List<SmallPerson> persons=bigPerson.getPersons();
for (SmallPerson person : persons) {
Log.i("test",person.toString());
}
//03.FastJson
// BigPerson bigPerson= JSON.parseObject(stringBuffer.toString(),BigPerson.class);
// Log.i("test",bigPerson.getList()+"");
// List<SmallPerson> persons=bigPerson.getPersons();
// for (SmallPerson person : persons) {
// Log.i("test",person.toString());
// }
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
}
}
}