Android json資料的幾種方法
一、什麼是json
百度百科中對json的介紹是這樣的:JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的資料交換語言。易於人閱讀和編寫,同時也易於機器解析和生成(網路傳輸速度快)。在實際的開發中,我們通常使用json作為客戶端與服務端的資料交換格式,所以我們必須瞭解json資料的解析方法,這裡介紹三種解析json資料的方法,分別是Android系統自帶的json解析、Google提供的Gson解析、阿里巴巴的fastjson解析。二、使用上面三種方式解析json資料
- {
- "cityList": [
- {
- "id": 1,
- "name": "武漢市"
- },
- {
- "id": 2,
- "name": "襄陽市"
- },
- {
- "id": 3,
- "name": "隨州市"
- },
- {
- "id"
- "name": "宜昌市"
- }
- ],
- "id": 1,
- "name": "湖北省"
- }
很簡單,就是一個省的資料,省中包括id、name、和市的集合,市中又包含了id和name屬性,下面我們就用三種方式來解析,直接上程式碼:[java] view plain copy print?{ "cityList": [ { "id": 1, "name": "武漢市" }, { "id": 2, "name": "襄陽市" }, { "id": 3, "name": "隨州市" }, { "id": 4, "name": "宜昌市" } ], "id": 1, "name": "湖北省" }
- package com.example.jsonparsetest;
- import java.util.ArrayList;
- import java.util.List;
- import org.json.JSONArray;
- import org.json.JSONObject;
- import android.app.Activity;
- import android.os.Bundle;
- import android.text.TextUtils;
- import android.view.View;
- import android.widget.TextView;
- import com.example.jsonparsetest.bean.City;
- import com.example.jsonparsetest.bean.Province;
- import com.example.jsonparsetest.utils.FileUtils;
- import com.google.gson.Gson;
- publicclass MainActivity extends Activity {
- private TextView textView;
- @Override
- publicvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- textView = (TextView) findViewById(R.id.content);
- }
- /**android自帶的JSON解析*/
- publicvoid btn1Click(View view) {
- //從assets目錄中的province.txt檔案中獲取JSON字串
- String json = FileUtils.getJSONStringFromFile(this);
- if(!TextUtils.isEmpty(json)){
- try {
- //將JSON字串轉化為JSON物件
- JSONObject obj = new JSONObject(json);
- Province province = new Province();
- //通過opt...方法,獲取鍵對應的值
- province.setId(obj.optInt("id"));
- province.setName(obj.optString("name"));
- //得到一個JSON陣列,數組裡裝的city的JSON資料
- JSONArray arr = obj.optJSONArray("cityList");
- if(arr != null && arr.length() > 0){
- List<City> cityList = new ArrayList<City>();
- //遍歷JSON陣列得到其中的city資料
- for(int i = 0; i < arr.length(); i++){
- JSONObject jobj = arr.getJSONObject(i);
- City city = new City();
- city.setId(jobj.optInt("id"));
- city.setName(jobj.optString("name"));
- cityList.add(city);
- }
- province.setCityList(cityList);
- }
- //把Province物件轉化為String顯示出來,注意這裡的Province和City物件都必須複寫了toString方法
- textView.append("使用Android自帶的JSON解析,得出的結果為:\n" + province.toString());
- textView.append("\n----------------\n");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- /**Google的gson解析*/
- publicvoid btn2Click(View view) {
- String json = FileUtils.getJSONStringFromFile(this);
- if(!TextUtils.isEmpty(json)){
- //新建一個Gson物件
- Gson gson = new Gson();
- //fromJson方法可以把一個json字串直接轉化為對應的物件
- Province province = gson.fromJson(json, Province.class);
- textView.append("使用Google的GSON解析,得出的結果為:\n" + province.toString());
- textView.append("\n----------------\n");
- }
- }
- /**阿里的fastjson解析*/
- publicvoid btn3Click(View view) {
- String json = FileUtils.getJSONStringFromFile(this);
- if(!TextUtils.isEmpty(json)){
- //parseObject方法和上面的fromJson方法類似,也可以直接將一個json字串轉化為對應的物件
- Province pro = com.alibaba.fastjson.JSON.parseObject(json, Province.class);
- textView.append("使用阿里的fastjson解析,得出的結果為:\n" + pro.toString());
- textView.append("\n----------------\n");
- }
- }
- }
package com.example.jsonparsetest;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import com.example.jsonparsetest.bean.City;
import com.example.jsonparsetest.bean.Province;
import com.example.jsonparsetest.utils.FileUtils;
import com.google.gson.Gson;
public class MainActivity extends Activity {
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.content);
}
/**android自帶的JSON解析*/
public void btn1Click(View view) {
//從assets目錄中的province.txt檔案中獲取JSON字串
String json = FileUtils.getJSONStringFromFile(this);
if(!TextUtils.isEmpty(json)){
try {
//將JSON字串轉化為JSON物件
JSONObject obj = new JSONObject(json);
Province province = new Province();
//通過opt...方法,獲取鍵對應的值
province.setId(obj.optInt("id"));
province.setName(obj.optString("name"));
//得到一個JSON陣列,數組裡裝的city的JSON資料
JSONArray arr = obj.optJSONArray("cityList");
if(arr != null && arr.length() > 0){
List<City> cityList = new ArrayList<City>();
//遍歷JSON陣列得到其中的city資料
for(int i = 0; i < arr.length(); i++){
JSONObject jobj = arr.getJSONObject(i);
City city = new City();
city.setId(jobj.optInt("id"));
city.setName(jobj.optString("name"));
cityList.add(city);
}
province.setCityList(cityList);
}
//把Province物件轉化為String顯示出來,注意這裡的Province和City物件都必須複寫了toString方法
textView.append("使用Android自帶的JSON解析,得出的結果為:\n" + province.toString());
textView.append("\n----------------\n");
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**Google的gson解析*/
public void btn2Click(View view) {
String json = FileUtils.getJSONStringFromFile(this);
if(!TextUtils.isEmpty(json)){
//新建一個Gson物件
Gson gson = new Gson();
//fromJson方法可以把一個json字串直接轉化為對應的物件
Province province = gson.fromJson(json, Province.class);
textView.append("使用Google的GSON解析,得出的結果為:\n" + province.toString());
textView.append("\n----------------\n");
}
}
/**阿里的fastjson解析*/
public void btn3Click(View view) {
String json = FileUtils.getJSONStringFromFile(this);
if(!TextUtils.isEmpty(json)){
//parseObject方法和上面的fromJson方法類似,也可以直接將一個json字串轉化為對應的物件
Province pro = com.alibaba.fastjson.JSON.parseObject(json, Province.class);
textView.append("使用阿里的fastjson解析,得出的結果為:\n" + pro.toString());
textView.append("\n----------------\n");
}
}
}
執行時截圖如下:
相關推薦
$.ajax()方法從伺服器獲取json資料幾種方式詳解
一.什麼是json json是一種取代xml的資料結構,和xml相比,它更小巧但描述能力卻很強,網路傳輸資料使用流量更少,速度更快。 json就是一串字串,使用下面的符號標註。 {鍵值對} : json物件 [{},{},{}] :json陣列 "" :雙引號內是屬性或值
Android解析JSON資料幾種方式對比
Json介紹 Json(JavaScript Object Natotion)是一種輕量級的資料交換格式,具有良好的可讀性和便於快速編寫的特性,主要用於傳送資料。Json是一種取代Xml的資料結構,相比於xml更小巧,從而減少資料傳輸流量和佔用的頻寬。 Json語法 {
關於兩個伺服器資料庫之間的資料幾種方法實踐
以前資料庫和環境相關的都是開發之前都是開發LEADER 搞定了,今天自己搞本地資料庫做測試,由於表比較多,資料比較多, 所以在用了很多種資料同步的方法,現在總結下下面幾種方法的感受 1.通過轉儲SQL 檔案,通過轉儲表結構和資料SQL 檔案的方式 ,然後匯入到本地的資料庫 缺點:
asp讀取解析JSON的幾種方法
方法一(使用MSScriptControl.ScriptControl): <% Dim sc4Json,arr0,json InitScriptControl json="{""name"":""123"",""content"":[{""id"":""1""}
js字串轉json的幾種方法
1,eval方式解析,恐怕這是最早的解析方式了。如下: 複製程式碼 程式碼如下: function strToJson(str){ var json = eval(‘(’ + str + ‘)’); return json; } 記得別忘了str兩旁的小括號。 2,new Fu
在 springmvc 中配置 json 的幾種方法
配置方法一 **1、匯入第三方的jackson包,jackson-mapper-asl-1.9.7.jar和jackson-core-asl-1.9.7.jar。 2、spring配置檔案新增
拼接json資料2種方法
//後端只要用ajax的方式去接收好了 引數 String 接收就好了 //我們自己用java 的方法去解析josn資料就好了 //java 部分 //獲取java 解析json物件(如果傳來的是陣列
Android中生成json格式資料的幾種方法
String生成的json資料有兩種 1 String json="[{'name':'tom','age':12},{'name':'jack','age':13}]"; JSONArray a
Android json資料的幾種方法
一、什麼是json百度百科中對json的介紹是這樣的:JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子
學習筆記:Android裡JSON解析的幾種方法
一、解析方法: Android解析json有很多種方法,下面介紹三種方法:Android自帶的org.json解析、Gson解析和Jackson解析。 優缺點對比: Android自帶的方法有點像xml的dom解析,遍歷之後根據需要的key值去取資
【VBA研究】解析JSON資料的幾種方法
iamlaosong文 網抓資料或者通過介面接收資料時,發來的資料很多是JSON格式,這是JavaScript常用的一種資料結構。對這種資料如何解析呢?先假定發來的資料如下,並針對這個資料給出幾種解析
將HTML5封裝成android應用APK文件的幾種方法
android作為下一代的網頁語言,HTML5擁有很多讓人期待已久的新特性。HTML5的優勢之一在於能夠實現跨平臺遊戲編碼移植,現在已經有很多公司在移動 設備上使用HTML5技術。隨著HTML5跨平臺支持的不斷增強和智能手機的迅速普,HTML5技術有著非常好的發展前景,甚至有人預言HTML5將引燃 移動平臺遊
Android 將HTML5封裝成android應用APK文件的幾種方法
顯示 import 網站 結束 name 很快 idm log 詳細 越來越多的開發者熱衷於使用html5+JavaScript開發移動Web App。不過,HTML5 Web APP的出現能否在未來取代移動應用,就目前來說,還是個未知數。一方面,用戶在使用習慣上,不喜歡在
Appium Android 獲取包名和 Activity 的幾種方法 (轉)
androidm test class .com mps 文件 ren -s tle 本文檔主要記錄“獲取包名和 Activity 的方法”,用於自動化測試時啟動APP。以下方法主要來源於網絡和社區同學的貢獻,特此感謝! 1. 方法一: pm list package查看包
html5 如何打包成apk,將H5封裝成android應用APK文件的幾種方法
pro 高手 closed 免費 lan 快速 沒有 能夠 keycode 直接使用編程軟件提供的方法: 1、需要下載安裝MyEclipse2014,Android SDK,eclipse(需配置Android開發環境) Java和Android環境安裝與配置。 2、打開M
Android去掉標題欄的幾種方法
1、直接在重寫的onCreate方法中說明 注意: this.requestWindowFeature(Window.FEATURE_NO_TITLE); 需要在setContentView(R.layout.activity_main);這一句上面。 2、在Andro
Android中Intent傳值的幾種方法
1.使用putextra Intent intent = new Intent(); intent.putExtra("test","asdf"); intent.se
Android Studio 中 處理 Gradle 依賴的幾種方法的介紹
exclude exclude : 剔除依賴中的某個模組 例: // 根據組織名 + 構建名剔除 //recyclerview 不想要依賴 com.android.support:support-annotations:26.1.0,就可以這麼做 implementation
Python中遍歷pandas資料的幾種方法介紹和效率對比說明
前言 Pandas是python的一個數據分析包,提供了大量的快速便捷處理資料的函式和方法。其中Pandas定義了Series 和 DataFrame兩種資料型別,這使資料操作變得更簡單。Series 是一種一維的資料結構,類似於將列表資料值與索引值相結合。DataFrame 是一種二維
NLP之TFTS讀入資料:TF之TFTS讀入時間序列資料的幾種方法
NLP之TFTS讀入資料:TF之TFTS讀入時間序列資料的幾種方法 T1、從Numpy 陣列中讀入時間序列資料 1、設計思路 2、輸出結果 {'times': array([ 0, 1, 2, 3, 4, 5, 6, 7, 8,