androidjson類
❶ Android 如何引用本地json文件
有時候遇到要一些模擬數據的時候,要麼寫個List<T>,要麼寫死.
然後數據比較多的時候可以引用本地資源文件,記錄下如何使用本地json文件
<1>在java同級目錄下創建"assets"資源文件夾
<2>編輯json文本內容
至於json文件夾內容 就自定義了,想要什麼內容寫什麼,對於一個做項目多了的開發者而言 json數據是熟悉到不能再熟悉的了
以下是我在淘寶一個個復制過來自己拼裝的一些商品數據
不需要加任何標識,只需要標準的json數據格式就可以了
<3>引用和json解析的工具類,解析用的 Gson也是經常用到的
<4>最後在需要的地方引用,"ExchangeBean"是根據json內容寫的一個模型,用於接收存放數據
有時間再補上demo,下面是效果圖:
❷ android JSON文件解析為類對象 出現以下錯誤,求解答。
用Gson解析json數據是可以的, 如果你非要把解析對象寫成類嵌套的形式,就必須要參考gson的用戶指南.這是截圖:
:最好的辦法是不要用類嵌套. 直接寫兩個類接即可
public class LoginData {
public Data Data;
public String Detail;
public string Return;
}
public static class Data {
public String name;
private String token;
public int uid;
}
❸ android 獲取了json 類型的數據,怎麼解析
JSONObject dataJson=new JSONObject("你的Json數據「);
JSONObject response=dataJson.getJSONObject("response");
JSONArray data=response.getJSONArray("data");
JSONObject info=data.getJSONObject(0);
String province=info.getString("province");
String city=info.getString("city");
String district=info.getString("district");
String address=info.getString("address");
System.out.println(province+city+district+address);
❹ android中解析json數據的org.json包中最重要
android中解析json數據的org.json包中最重要的是jsonarray。
jsonarray主要是解析json數據,因此四最重要的。
Android是一種基於Linux的自由及開放源代碼的操作系統。主要使用於移動設備,如智能手機和平板電腦。
❺ android json解析三種方式哪種效率最高
用org.json以及谷歌提供gson來解析json數據的方式更好一些。
安卓下通常採用以下幾種方式解析json數據:
1、org.json包(已經集成到android.jar中了)
2、google提供的gson庫
3、阿里巴巴的fastjson庫
4、json-lib
以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數據,層數比較多的
1使用android內置的org.json包提供的類解析,並保存在指定的對象中
Response response = new Response();
// 解析response_head
Response_head response_head = new Response_head();
JSONObject jsonObject = new JSONObject(json);
JSONObject responseHead = jsonObject.getJSONObject("response_head");
response_head.setRespmenu(responseHead.getString("respmenu"));
response_head.setResptime(responseHead.getString("resptime"));
Respinfo respInfo = new Respinfo();
JSONObject respinfo = responseHead.getJSONObject("respinfo");
respInfo.setRespcode(respinfo.getString("respcode"));
respInfo.setRespdes(respinfo.getString("respdes"));
response_head.setRespinfo(respInfo);
response.setResponse_head(response_head);
// 解析response_body
Response_body response_body = new Response_body();
JSONObject responseBody = jsonObject.getJSONObject("response_body");
JSONArray jsonArray = responseBody.getJSONArray("crset");
List<Merchant> merchants = new ArrayList<Merchant>();
for (int i = 0; i < jsonArray.length(); i++) {
// 解析每個merchant
JSONObject item = jsonArray.getJSONObject(i);
Merchant merchant = new Merchant();
merchant.setMerchantname(item.getString("merchantname"));
// 解析每個menu
List<Menu> menus = new ArrayList<Menu>();
JSONArray array = item.getJSONArray("menu");
for (int j = 0; j < array.length(); j++) {
JSONObject menuitem = array.getJSONObject(i);
Menu menu = new Menu();
menu.setMenuid(menuitem.getString("menuid"));
menu.setMenuname(menuitem.getString("menuname"));
menus.add(menu);
}
merchant.setMenu(menus);
merchants.add(merchant);
}
response_body.setCrset(merchants);
response.setResponse_body(response_body);
2 使用google的開源庫gson解析,並保存在指定的對象中
Gson gson = new Gson();
Type type = new TypeToken<Response>(){}.getType();
Response response = gson.fromJson(json, type);
❼ android使用JSON遇到的坑(1)
最近在開發的過程中遇到一個問題,服務端返回了一個JSON對象,在用JSON庫解析的時候出現了一個詭異的問題
服務端返回的原始JSON是
在程序中直接調用JSON中的方法
列印的日誌如下
通過JSON的方法取到的結果出現了不一致的情況。應該是轉換的時候精度出現了損失,一步一步跟到內部的實現方法,先看optLong()
這里調用了兩個參數的optLong()方法,在不傳默認值的時候如果出錯的話這個方法會返回0。再往裡跟,這個方法內部調用了JSON.toLong()方法。
接著向裡面走
看來問題是出在這里了,當輸入的參數為String的時候,toLong()方法會使用Double.parseDouble()方法解析,而我們知道double的精度是會有損失的,在 Google的文檔 上有這么一句話
在取非常大的數字的時候,會先轉換成String,再通過parseDouble()方法轉成long,這期間就造成了精度損失。
先得到String類型的值,再將String轉成long
這樣就可以正確的取到值了,Long.valueOf()內部實現調用了BigInteger中的方法,這樣就能保證結果正確了。
❽ android怎麼看json數據格式
JSON有兩種表示結構,對象和數組。
對象結構以」{」大括弧開始,以」}」大括弧結束。中間部分由0或多個以」,」分隔的」key(關鍵字)/value(值)」對構成,關鍵字和值之間以」:」分隔,語法結構如下
{
key1:value1,
key2:value2,
}其中關鍵字是字元串,而值可以是字元串,數值,true,false,null,對象或數組
數組結構以」[」開始,」]」結束。中間由0或多個以」,」分隔的值列表組成,語法結構如下
[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
❾ Android 中解析 JSON
JSON( JavaScript Object Notation ) 是一種輕量級的數據交換格式。易於閱讀和編寫,同時也易於機器解析和生成。
JSON 建構於兩種結構:
JSON 具有以下這些格式:
參考: Android 中 解析 JSON
Android 提供類四種不同的類來操作 JSON 數據。這些類是 JSONArray、JSONObject、JSONStringer 和 JSONTokenizer
為了解析 JSON 對象,須先創建一個 JSONObject 類的對象,需要傳入需解析的字元串 JSONObject root = new JSONObject(candyJson); 然後根據 JSONObject 對象提供方法以及數據類型解析對應 json 數據。下表展示一些 JSONObiect 提供的方法
示例: