android手動解析json
一、什麼是JSON?
JSON是一種取代XML的資料結構,和xml相比,它更小巧但描述能力卻不差,由於它的小巧所以網路傳輸資料將減少更多流量從而加快速度。JSON就是一串字串 只不過元素會使用特定的符號標註。
{} 雙括號表示物件
[] 中括號表示陣列
"" 雙引號內是屬性或值
: 冒號表示後者是前者的值(這個值可以是字串、數字、也可以是另一個數組或物件)
所以 {"name": "Michael"} 可以理解為是一個包含name為Michael的物件
而[{"name": "Michael"},{"name": "Jerry"}]就表示包含兩個物件的陣列
當然了,你也可以使用{"name":["Michael","Jerry"]}來簡化上面一部,這是一個擁有一個name陣列的物件
二、JSON解析之傳統的JSON解析
1、生成JSOn字串
public static String createJsonString(String key, Object value) {
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
return jsonObject.toString();
}
2、解析JSON字串
分為以下三種情況,一個JavaBean,一個List陣列,一個巢狀Map的List陣列:import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.json.JSONArray; import org.json.JSONObject; import com.android.myjson.domain.Person; /** * 完成對json資料的解析 * */ public class JsonTools { 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 getPersons(String key, String jsonString) { List list = new ArrayList(); 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 getList(String key, String jsonString) { List list = new ArrayList(); 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> listKeyMaps(String key, String jsonString) { List> list = new ArrayList>(); 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 map = new HashMap(); Iterator 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; } }
三、JSON解析之GSON
1、生成JSON字串
import com.google.gson.Gson;
public class JsonUtils {
public static String createJsonObject(Object obj) {
Gson gson = new Gson();
String str = gson.toJson(obj);
return str;
}
}
二、解析JSON
import java.util.ArrayList; import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; ; public class GsonTools { public GsonTools() { // TODO Auto-generated constructor stub } /** * @param * @param jsonString * @param cls * @return */ public static T getPerson(String jsonString, Class cls) { T t = null; try { Gson gson = new Gson(); t = gson.fromJson(jsonString, cls); } catch (Exception e) { // TODO: handle exception } return t; } /** * 使用Gson進行解析 List * * @param * @param jsonString * @param cls * @return */ public static List getPersons(String jsonString, Class cls) { List list = new ArrayList(); try { Gson gson = new Gson(); list = gson.fromJson(jsonString, new TypeToken>() { }.getType()); } catch (Exception e) { } return list; } /** * @param jsonString * @return */ public static List getList(String jsonString) { List list = new ArrayList(); try { Gson gson = new Gson(); list = gson.fromJson(jsonString, new TypeToken>() { }.getType()); } catch (Exception e) { // TODO: handle exception } return list; } public static List> listKeyMaps(String jsonString) { List> list = new ArrayList>(); try { Gson gson = new Gson(); list = gson.fromJson(jsonString, new TypeToken>>() { }.getType()); } catch (Exception e) { // TODO: handle exception } return list; } }
三、JSON解析之FastJSON
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
public class JsonTool {
public static T getPerson(String jsonstring, Class cls) {
T t = null;
try {
t = JSON.parseObject(jsonstring, cls);
} catch (Exception e) {
// TODO: handle exception
}
return t;
}
public static List getPersonList(String jsonstring, Class cls) {
List list = new ArrayList();
try {
list = JSON.parseArray(jsonstring, cls);
} catch (Exception e) {
// TODO: handle exception
}
return list;
}
public static List> getPersonListMap1(
String jsonstring) {
List> list = new ArrayList>();
try {
list = JSON.parseObject(jsonstring,
new TypeReference>>() {
}.getType());
} catch (Exception e) {
// TODO: handle exception
}
return list;
}
}
總結:
JSON對於移動裝置來說,尤其對於網路環境較差和流量限制的情況下,相對於XML格式的資料傳輸會更節省流量,傳輸效率更高。在這三種解析方式中FastJson是效率最高的,推薦使用。相關推薦
android手動解析json
一、什麼是JSON? JSON是一種取代XML的資料結構,和xml相比,它更小巧但描述能力卻不差,由於它的小巧所以網路傳輸資料將減少更多流量從而加快速度。 JSON就是一串字串 只不過元素會使用特定的符號標註。 {} 雙括號表示物件 [] 中括號表示陣列 "" 雙引號內是屬
Android Gson解析json工具類封裝
pac spa google lis object sonar andro on() div package com.springSecurity.gson; import java.util.ArrayList; import java.util.List
android 快速解析json資料搭配Gson庫中Android Studio外掛 GsonFormat
轉:https://www.jianshu.com/p/d34c5e7c8227 更簡潔的文章:http://www.cnblogs.com/foxy/p/7825380.html 如果對json解析資料還不清楚的可以看一下我的例子:ExpandableListView+SQLite+Jso
Android之解析Json陣列
在ListView顯示資料庫裡所有資料的時候,因為資料庫的資料是一條一條的記錄,在後臺返回的時候,我們往往是返回Json陣列的形式,把每一條資料當作是一個數組元素儲存起來。 先看下我們準備的Json陣列: [{ "id": "37", "bianhao": "201872986329
android Gson解析JSON資料中動態未知欄位key的方法
有時在解析json資料中的欄位key是動態可變的時候,由於Gson是使用靜態註解的方式來設定實體物件的,因此我們很難直接對返回的型別來判斷。但Gson在解析過程中如果不知道解析的欄位,就會將所有變數儲存在一個Map中,我們只要例項化這個map就能動態地取出key和value了。先給出一段js
Android-Gson解析JSON資料(JSON物件/JSON陣列)
上一篇部落格,Android-解析JSON資料(JSON物件/JSON陣列),介紹了使用 org.json.JSONArray;/org.json.JSONObject; 來解析JSON資料; Google Android 還提供來另外一種方式來解析JSON資料,那就是Gson;
Android Gson解析Json(常規使用)
gson是一個java庫,用作java物件和json表示式之間的轉換。gson可以處理任何Java物件,包括已經存在的、你沒有原始碼的物件。gson有很多的優勢,比如它強大的功能:1.反序列化25M以上的字串沒有任何問題。2.它可以序列化一個有140萬個物件的集合,3.反序
Android中解析json資料的三種方式
Json簡介 JAVAScript Object Notation是一種輕量級的資料交換格式 具有良好的可讀和便於快速編寫的特性。 業內主流技術為其提供了完整的解決方案(有點類似於正則表示式 ,獲得了
android 資料解析 JSON 開發詳解+視訊
什麼是json: JSON即JavaScript Object Natation的簡稱,它是一種輕量級的資料交換格式,非常適合伺服器與JavaScript的互動。JSON易於人閱讀和編寫。同時也易於
Java 手動解析Json資料小記
public static void main(String[] args) throws JSONException { String json = "{status:2,result:[
android json解析詳解(json手動解析)
一 .json簡介 1)概念:json全稱是javaScript object Notation,是一種病輕量級的資料交換格式。 2)特點: 1.本質就是具有特定格式的字串 2,.json完全獨立於程式語言 3.json比xml資料傳輸的有效性要高出很多 二。json資料
android 訪問web端與解析json,模擬用戶登錄
android用戶登錄 與解析json數據 之前寫過一個java web端的登錄驗證,最後返回一個json字符串。字符串格式如下:{"appmsg":"賬號或密碼錯誤","appcode":0,"_default_boolean_a":false}今天就結合著Android來寫一個簡單的登錄。註意:
Android以JSONOject和GSON兩種方式解析json
length pre ray oid 字符 CA clas img name json文件如下: 將獲取到的json數據轉化為String形式 OkHttpClient client = new OkHttpClient(); R
【我的Android進階之旅】關於解析json資料中自帶轉義符號的正確操作
一、問題描述 在實現一個功能的時候,需要伺服器以json格式返回一段功能配置,比如如下所示的json配置。 1.1 我希望的json格式 { "k": "ClientFilterTrace_android", "isVisible": true
Android 整合okhttp3、listview解析json資料
上上篇文章寫了個Android的模擬介面,終於派上用場了 現在我們將接口裡面的json資料通過ListView顯示出來,效果如下: 先講一下ListView吧, 講ListView之前,肯定要講Adapter,在Android應用程式中,採用資料和顯示分開實現的資料處理方式,由於資料來
Android-解析JSON資料(JSON物件/JSON陣列)
在上一篇部落格中,Android-封裝JSON資料(JSON物件/JSON陣列),講解到Android真實開發中更多的是去解析JSON資料(JSON物件/JSON陣列) 封裝JSON的資料是在伺服器端進行封裝了,Android更多的工作是解析(JSON物件/JSON陣列),所以Android
Json轉換利器Gson之-實際開發中的特殊需求處理(手動解析-TypeToken處理)
處理方法: 1,先將介面返回的JSON,用gson.tojson(map)方法,將LinkedTreeMap物件轉成String。 2,再通過gson.fromjson(string,type)方法,將String轉成LinkedTreeMap。用到了Type type=
Xamarin.Android下獲取與解析JSON
一、新建專案 1.新建一個Android專案,並命名為為NetJsonList 2.右擊引用,選擇新增引用,引用System.Json.dll 二、同步請求 既然是跨平臺,我們自然不能按照java下的方式進行編寫,否則如何跨平臺呢,所以我們需要使用Syste.Net名稱空間下的兩個類:
Android之使用GSON解析JSON資料
GSON簡介: GSON是Google提供的用來在Java物件和JSON資料之間進行對映的Java類庫。GSON可以很容易的將一串JSON資料轉換為一個Java物件,或是將 一個Java物件轉換為相應的JSON資料。 使用GSON解析JSON資料的基本
android開發之 Gson 解析json陣列
為了紀念兩天解決的一個問題。 剛剛接觸到android的volley 框架,使用jsonarrayrequest的時候,得到jsonarray 問高手說可以用Gson 來解析於是開始了兩天的鑽研之路。 首先我的資料是這樣的 然後,你需要自己寫一個類,對應後臺資料的一個