導航:首頁 > 操作系統 > android解析嵌套json

android解析嵌套json

發布時間:2022-12-25 02:06:10

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 提供的方法

示例:

㈡ Android 解析json問題

Android 解析json的方式為:
1、首先,搭建一個伺服器的工程:JsonProject這個項目
源代碼:
Person.java
package com.json.domain;
public class Person {
private int id;
private String name;
private String address;

public Person() {
super();
}
public Person(int id, String name, String addrss) {
super();
this.id = id;
this.name = name;
this.address = addrss;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Person [addrss=" + address + ", id=" + id + ", name=" + name
+ "]";
}

}
JsonService.java

package com.json.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.json.domain.Person;

public class JsonService {

public JsonService() {
}

public Person getPerson(){
Person person = new Person(1001,"jack","上海黃浦區");
return person;
}
public List<Person> getListPerson(){
List<Person> list = new ArrayList<Person>();
Person person1 = new Person(1001,"jack","上海黃浦區");
Person person2 = new Person(1002,"rose","上海閔行區");
Person person3 = new Person(1003,"mick","上海黃浦區");
list.add(person1);
list.add(person2);
list.add(person3);
return list;
}

public List<String> getListString(){
List<String> list = new ArrayList<String>();
list.add("北京");
list.add("上海");
list.add("湖南");
return list;
}

public List<Map<String,Object>> getListMaps(){
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map1 = new HashMap<String, Object>();
Map<String,Object> map2 = new HashMap<String, Object>();
map1.put("id", 1001);
map1.put("name", "jack");
map1.put("address", "北京");
map2.put("id", 1001);
map2.put("name", "rose");
map2.put("address", "上海");
list.add(map1);
list.add(map2);
return list;
}
}
JsonServlet.java

package com.json.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.json.service.JsonService;
import com.json.tools.JsonTools;

public class JsonServlet extends HttpServlet {
private JsonService service;
/**
* Constructor of the object.
*/
public JsonServlet() {
super();
}

/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}

/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

this.doPost(request, response);
}

/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();

String jsonString = "";
String action_flag = request.getParameter("action_flag");
if(action_flag.equals("person")){
jsonString = JsonTools.createJsonString("person", service.getPerson());
}else if(action_flag.equals("persons")){
jsonString = JsonTools.createJsonString("persons", service.getListPerson());
}else if(action_flag.equals("listString")){
jsonString = JsonTools.createJsonString("listString", service.getListString());
}else if(action_flag.equals("listMap")){
jsonString = JsonTools.createJsonString("listMap", service.getListMaps());
}
out.println(jsonString);
out.flush();
out.close();
}

/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
service = new JsonService();
}

}
2、通過瀏覽器
訪問地址一:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=person
輸出以下結果:
{"person":{"address":"上海黃浦區","id":1001,"name":"jack"}
訪問地址二:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=persons
輸出以下結果:
{"persons":[{"address":"上海黃浦區","id":1001,"name":"jack"},{"addrss":"上海閔行區","id":1002,"name":"rose"},{"address":"上海黃浦區","id":1003,"name":"mick"}]}
訪問地址三:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=listString
輸出以下結果:
{"persons":["北京","上海","湖南"]}
訪問地址四:http://wulianghuan-pc:8080/JsonProject/servlet/JsonServlet?action_flag=listMap
輸出以下結果:
{"persons":[{"id":1001,"address":"北京","name":"jack"},{"id":1001,"address":"上海","name":"rose"}]}

㈢ android使用gson解析嵌套復雜的json數據,數據怎麼顯示到布局上,布局怎麼寫

首先先講一個比較簡單點的例子(最簡單的我就不講啦,網上很多),幫助新手理解Gson的使用方法:
比如我們要解析一個下面這種的Json:
String json = {"a":"100","b":[{"b1":"b_value1","b2":"b_value2"},{"b1":"b_value1","b2":"b_value2"}],"c":{"c1":"c_value1","c2":"c_value2"}}
首先我們需要定義一個序列化的Bean,這里採用內部類的形式,看起來會比較清晰一些:
public class JsonBean {
public String a;
public List<B> b;
public C c;

public static class B {
public String b1;
public String b2;
}

public static class C {
public String c1;
public String c2;
}
}
很多時候大家都是不知道這個Bean是該怎麼定義,這裡面需要注意幾點:
1、內部嵌套的類必須是static的,要不然解析會出錯;
2、類裡面的屬性名必須跟Json欄位裡面的Key是一模一樣的;
3、內部嵌套的用[]括起來的部分是一個List,所以定義為 public List<B> b,而只用{}嵌套的就定義為 public C c,
具體的大家對照Json字元串看看就明白了,不明白的我們可以互相交流,本人也是開發新手!
Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<JsonBean>() {}.getType();
JsonBean jsonBean = gson.fromJson(json, type);
然後想拿數據就很簡單啦,直接在jsonBean裡面取就可以了!
如果需要解析的Json嵌套了很多層,同樣可以可以定義一個嵌套很多層內部類的Bean,需要細心的對照Json欄位來定義哦。

㈣ 安卓怎樣解析json數據

{"result":"true","asks":[[4168.33,0.06],[4160,0.4982],[4152,0.4401]...}
這個json不是標準的json格式,asks本身是一個數組,裡面嵌套多個二維數組,就需要分層處理。
1.先把整體轉換成json object。
2、從1中取出asks這個數組,jsonArray
3、循環處理裡面的子數組。

㈤ 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 解析 嵌套的JsonArray 這個具體該怎麼解析呢

String json = "";
try {
JSONArray arr = new JSONArray(json);
for (int i=0; i<arr.length(); i++) {
JSONObject obj = arr.getJSONObject(i);
String secondId = obj.getString("secondId");
String lessonpId = obj.getString("lessonpId");
String secondTitle = obj.getString("secondTitle");
JSONArray recordArr = obj.getJSONArray("record");
for (int j=0; j<recordArr.length(); j++) {
JSONObject recordObj = recordArr.getJSONObject(j);
// String secondId2 = recordObj.getString("secondId");
String threeTitle = recordObj.getString("threeTitle");
String threeId = recordObj.getString("threeId");
}
}
} catch (JSONException e) {
e.printStackTrace();
}

㈦ android 嵌套json解析

JsonObject obj = new JsonObject(string);
obj.optString(key,defaultValue);
obj.optInt(key,defaultValue);
....其他數據類型也一樣

㈧ Android json解析

關於json解析有很多第三方的jar包可以使用,如gson,也可以使用android自帶的工具類org.json包下,這里你可以使用JSONTokener(json解析類 ),例:

// {
// "phone" : ["12345678", "87654321"], // 數組
// "name" : "yuanfei89", // 字元串
// "age" : 100, // 數值
// "address" : { "country" : "china", "province" : "jiangsu" }, // 對象
// "married" : false // 布爾值
// }

private static final String JSON =
"{" +
" \"phone\" : [\"12345678\", \"87654321\"]," +
" \"name\" : \"yuanfei89\"," +
" \"age\" : 100," +
" \"address\" : { \"country\" : \"china\", \"province\" : \"jiangsu\" }," +
" \"married\" : false," +
"}";

try {
JSONTokener jsonParser = new JSONTokener(JSON);
// 此時還未讀取任何json文本,直接讀取就是一個JSONObject對象。
// 如果此時的讀取位置在"name" : 了,那麼nextValue就是"yuanfei89"(String)
JSONObject person = (JSONObject) jsonParser.nextValue();
// 接下來的就是JSON對象的操作了
person.getJSONArray("phone");
person.getString("name");
person.getInt("age");
person.getJSONObject("address");
person.getBoolean("married");
} catch (JSONException ex) {
// 異常處理代碼
}

可參考:http://www.open-open.com/lib/view/open1326376799874.html

㈨ Android Json解析

用JSONObject 這個開源庫,或者用android的 Gson開源庫

JSONObject jsonObj = new JSONObject(json字元串);

JSONArray array = jsonObj.getJSONArray("result");



㈩ android怎麼解析json

你好,我試過了,這樣能取到你要的結果:
用的gson-2.2.4.jar包,你應該有吧,沒有網路搜下去下個就好了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class MyTest {
public static void main(String[] args) {
String json = "{'resultcode':'200','reason':'ReturnSuccessd!','result':{'data':[{'MCC':'460','MNC':'1','LNG':'120.721423','LAT':'31.29854','O_LNG':'120.72577772352','O_LAT':'31.296529947917','PRECISION':'1101','ADDRESS':'江蘇省蘇州市吳中區金雞湖大道368號'}]}}";
JsonParser jsonParser = new JsonParser();
JsonObject jsonObj = jsonParser.parse(json).getAsJsonObject();
JsonObject result = jsonObj.get("result").getAsJsonObject();
JsonArray data = result.get("data").getAsJsonArray();
String O_LNG = data.get(0).getAsJsonObject().get("O_LNG").getAsString();
String O_LAT = data.get(0).getAsJsonObject().get("O_LAT").getAsString();
String ADDRESS = data.get(0).getAsJsonObject().get("ADDRESS").getAsString();
System.out.println(O_LNG);
System.out.println(O_LAT);
System.out.println(ADDRESS);
}
}

閱讀全文

與android解析嵌套json相關的資料

熱點內容
公路商店app標簽選什麼 瀏覽:335
linuxoracle命令行登錄 瀏覽:224
android深度休眠 瀏覽:169
php微信開發例子 瀏覽:843
醫得app登錄密碼是什麼 瀏覽:140
spring開發伺服器地址 瀏覽:411
伺服器上如何查看伺服器的埠 瀏覽:678
單片機伺服器編譯 瀏覽:770
單口usb列印機伺服器是什麼 瀏覽:859
戰地五開伺服器要什麼條件 瀏覽:956
在word中壓縮圖片大小 瀏覽:255
javatomcat圖片 瀏覽:419
程序員生產智能創意 瀏覽:67
匯和銀行app怎麼登錄 瀏覽:383
騰訊伺服器如何上傳源碼 瀏覽:747
單片機的原理概述 瀏覽:512
火控pdf 瀏覽:269
如何復制雲伺服器centos環境 瀏覽:988
債權pdf 瀏覽:306
紅色番字的app怎麼下載 瀏覽:876