Android 台灣中文網
標題:
Android利用Json來進行網路數據傳輸
[打印本頁]
作者:
暗桌之光
時間:
2011-11-3 14:22
標題:
Android利用Json來進行網路數據傳輸
目前有很多地方得用到網路數據傳輸與解析,這裡採用的是Json方式,它與傳統的XML解析方式比起來,有自己的一些優點,首先,它是比XML更輕量級,再一個,寫一個XML文件是個煩人的事兒,而Json則相對輕鬆些。
Android平台有Jsong相關的類來進行Json數據解析,悲劇的是,它們是Android SDK3.0以後才能用的。不過在Google網站:
http://code.google.com/p/google-gson/
裡有一個名為Gson的類庫,可以用它來解析Json數據,並且,Adroid 3.0平台裡其實也就是把這一部分直接整合進Android裡了。我們要解析Json數據,直接去網站上下載個jar包,導入到工程裡,就可以解析Json數據了。
下面有個例子,很清晰的解釋了這種工作方式:
先看看兩個封裝的類:
HttpUtils.java:
public class HttpUtils { //從服務器端下載到Json數據,也就是個字符串
public static String getData(String url) throws Exception {
StringBuilder sb = new StringBuilder();
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
if (httpEntity != null) {
InputStream instream = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
instream));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
return sb.toString();
}
return null;
}
複製代碼
JsonUtils.java:
public class JsonUtils {
public static List<Student> parseStudentFromJson(String data) {
Type listType = new TypeToken<LinkedList<Student>>() {
}.getType();
Gson gson = new Gson();
LinkedList<Student> list = gson.fromJson(data, listType);
return list;
}
}
複製代碼
裡面的Student是一個JavaBean對像:
public class Student {
private String name;
private int age;
private String id;
public Student() {
super();
}
public Student(String name, int age, String id) {
super();
this.name = name;
this.age = age;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
複製代碼
再看看我們要解析網路數據的Activity:
public class MainActivity extends Activity {
private TextView textView;
private List<Student> list;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView) findViewById(R.id.textView);
String data = null;
try {
data = HttpUtils
.getData("http://10.16.12.165:8080/JsonTest/JsonTestServlet");
} catch (Exception e) {
e.printStackTrace();
}
String result = "";
list = JsonUtils.parseStudentFromJson(data);
for (Student s : list) {
result += "name: " + s.getName() + " " + "age: " + s.getAge()
+ " " + "id: " + s.getId() + "\n";
}
textView.setText(result);
}
}
複製代碼
這樣就可以獲取網路數據並加以解析利用了
作者:
ploglin
時間:
2011-11-4 09:10
json 是很方便的格式,或許是我接觸 oo 還不夠深,當我在使用 json 的時候,因為通常會需要搭配 ListView 或 GridView 之類的,因此在需要使用到 SimpleAdapter 的類。
在處理上會利用 JSONObject 以及 JSONArray 2種方式,將資料轉換成 ArrayList<HashMap<String, Object>> 的格式,傳入 SimpleAdapter 來實作資料的呈現。
作者:
louis5727008
時間:
2012-2-6 14:29
怎麼沒有早點發現這個論壇呢?有進度了~感謝大大~
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1