Ⅰ android 解析json用那個包裡面的方法比較好呢
android 解析json還有用Google出品的Gson比較好,具體步驟為:
1、首先,從 code.google.com/p/google-gson/downloads/list下載GsonAPI:
google-gson-1.7.1-release.zip 把gson-1.7.jar 到libs(項目根目錄新建一個libs文件夾)中。 可以使用以下兩種方法解析JSON數據,通過獲取JsonReader對象解析JSON數據。
代碼如下:
String jsonData = "[{\"username\":\"arthinking\",\"userId\":001},{\"username\":\"Jason\",\"userId\":002}]";
try{
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();
while(reader.hasNext()){
reader.beginObject();
while(reader.hasNext()){
String tagName = reader.nextName();
if(tagName.equals("username")){
System.out.println(reader.nextString());
}
else if(tagName.equals("userId")){
System.out.println(reader.nextString());
}
}
reader.endObject();
}
reader.endArray();
}
catch(Exception e){
e.printStackTrace();
}
2、使用Gson對象獲取User對象數據進行相應的操作:
代碼如下:
Type listType = new TypeToken<LinkedList<User>>(){}.getType();
Gson gson = new Gson();
LinkedList<User> users = gson.fromJson(jsonData, listType);
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user = (User) iterator.next();
System.out.println(user.getUsername());
System.out.println(user.getUserId());
}
3、如果要處理的JSON字元串只包含一個JSON對象,則可以直接使用fromJson獲取一個User對象:
代碼如下:
String jsonData = "{\"username\":\"arthinking\",\"userId\":001}";
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.println(user.getUsername());
System.out.println(user.getUserId());
Ⅱ android怎麼接收json數據
android如果是通過http post發送數據的話,可以採用以下方式接收數據: 通過request.getParameter(paraName); 獲取參數。 request對象就是表示請求對象,getParameter就是獲取參數,傳遞的參數就是參數名。 例如請求 localhost:8080/web?data=abcd 則伺服器取值, request.getParameter("data"); 。
Ⅲ Android開發中為什麼很少使用JSON存儲數據
是可以用JSON存儲數據對象的,而且也是Google推薦的,可以取代以實現Serializable來存儲對象的方法。下面是使用JSON存儲數據的原因。
Android開發中,涉及到對象存儲,通常的做法是直接實現`Serializable`。有關這個介面,它保證了實現該介面的類的對象能夠被`ObjectOutput/InputStream`直接輸入輸出,即序列化。這很方便,但是也很不好。
提到『序列化』,大多數人都想到`Serializable`,而實際上『序列化』的只是指「將對象的狀態信息轉換為可以存儲或傳輸的形式的過程」,Java的`Serializabe`是位元組序列化的一種。
`Serialziable`的缺點之一是,實現了該介面的類將失去靈活性。這一點《Effective Java》第74條也指出了,實現了這個`Serializable`的類將會依賴這個類的內部演化,根源在於UID(Serial version UID)。如果你沒有指定UID,那麼每次這個類被序列化時都會根據這個類的當前狀態生成一個UID。想像這么一種場景:這個類已經被導出了,比如發給其他公司或部門使用了,然後你又修改了這個類,那麼當你再將這個類發布時,由於UID不同,其他公司或部門的程序員將可能得到一個「InvalidClassException」。
這種情況的根本原因是因為你不能控制序列化的實現,你控制不了UID的生成過程。這就需要一個自定義的序列化形式。在Android中,Google推薦JSON序列化。而且Android程序員也可以使用Gson等工具來進行序列化和反序列化。
和`Serializable`的位元組序列化不同,JSON序列化是字元序列化。
此外,`Serializable`只適合存儲對象。由於在傳輸時`Serializalbe`要做大量IO,Android提供了`Parcelable`。
最後,題主不應該把資料庫和JSON,XML比較,如果要比,也只能把資料庫和文件存儲比。資料庫適合存儲數量大,關系復雜的數據,這樣管理,查閱就很方便。與此相對文件存儲適合數量小,關系簡單的數據。
Ⅳ 請問android怎樣通過json數據從伺服器獲取圖片
android裡面,通過json數據是不會直接返回圖片的,只會返回圖片的url地址。
步驟: 1,通過解析json數據,獲取到圖片的地址。
2,通過圖片的地址,再一次的請求網路(用非同步任務或者hangdler裡面請求網路:比如:
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
BufferedInputStream is = new BufferedInputStream(conn.getInputStream());
)
3 通過BitmapFactory.decodeStream(裡面的參數是一個位元組流),該方法返回的是一個bitmap ,直接用imageview.setimagebitmap()就能展示圖片了。
說明: 在BitmapFactory.decodeStream這里返回的bitmap可以做進一步的優化,比如二次采樣,把獲取的bitmap存sd卡等等。。
Ⅳ Android:使用OkHttp發送HTTPGet請求,並解析所得的JSON數據。
在Android開發中,OkHttp作為首選的網路通信庫,因其簡單易用和高效性能而廣受歡迎。本文將指導你如何使用OkHttp發送HTTPGet請求,並解析返回的JSON數據。
步驟如下:
1. 首先,你需要在項目中添加OkHttp依賴。在`build.gradle`中添加相關代碼,OkHttp會自動下載並集成到你的項目中。
2. 創建一個`OkHttpClient`實例,接著創建一個`Request`對象。雖然初始對象是空的,但後續可以通過Builder方法添加請求細節。
3. 調用`OkHttpClient`的`newCall(Request)`方法創建`Call`對象,並通過`execute()`方法發送GET請求。伺服器返回的數據存儲在`response`中。
4. 對於POST請求,構建`RequestBody`,使用`POST`方法進行數據提交,同樣通過`execute()`獲取響應數據。
5. 數據通常以JSON格式傳輸,Android中常用Gson進行解析。例如,你可以創建一個JavaBean類,然後通過Gson將JSON轉換為對象。
6. 數據解析後,你可以將其展示在UI上,如創建一個MainActivity來演示。
7. 如果遇到重定向問題,記得調整`request.url()`。對於JSON文件的解析,只需根據Gson的API調整代碼即可。
8. 最後,確保你的項目環境中已經安裝了必要的服務,如Tomcat,以便進行JSON文件的讀取和解析。
通過以上步驟,你將能夠熟練地在Android應用中使用OkHttp發送HTTP請求,並解析JSON數據。記得根據項目需求靈活調整和優化你的網路請求和數據處理代碼。