Android中JSON详细总结

合集下载

解析json的原理

解析json的原理

解析json的原理JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以文本形式表示数据,易于阅读和编写。

JSON格式被广泛应用于Web应用程序中,用于数据传输和存储。

本文将解析JSON的原理进行详细分析,帮助读者对JSON有更深入的了解。

一、JSON的基本结构JSON由键值对组成,其中键(key)是一个字符串(string),值(value)可以是字符串、数值、布尔值、数组(array)、对象(object)或null。

以下为一个简单的JSON示例:{"name": "John","age": 30,"employed": true,"pets": ["dog", "cat"],"address": {"city": "New York","state": "NY"},"education": null}在以上示例中,name、age、employed等为键,"John"、30、true等为对应的值,整个JSON对象用花括号括起来。

二、JSON的解析原理JSON解析的过程可以分为两个主要步骤:扫描和解析。

1. 扫描(Scanning):扫描即遍历JSON文本的过程。

解析器会逐个检查JSON文本中的字符,把它们分类为键、值、字符串、数组、对象等类型,并记录下它们的位置和关系。

在扫描过程中,解析器会忽略空格、换行和制表符等空白字符。

当遇到左花括号({)时,解析器会创建一个新的对象,当遇到右花括号(})时,解析器会结束当前对象的解析。

同理,遇到左方括号([)时,解析器会创建一个新的数组,遇到右方括号(])时,解析器会结束当前数组的解析。

Android中gson、jsonobject解析JSON的方法详解

Android中gson、jsonobject解析JSON的方法详解

Android中gson、jsonobject解析JSON的⽅法详解JSON的定义:⼀种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。

业内主流技术为其提供了完整的解决⽅案(有点类似于正则表达式,获得了当今⼤部分语⾔的⽀持),从⽽可以在不同平台间进⾏数据交换。

JSON采⽤兼容性很⾼的⽂本格式,同时也具备类似于C语⾔体系的⾏为。

JSON对象:JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每⼀个item都是⼀个key-value对, 表现为"key:value"的形式, key-value对之间使⽤逗号分隔. 如:{"name":"coolxing", "age"=24, "male":true, "address":{"street":"huiLongGuan", "city":"beijing", "country":"china"}}. JSON对象的key只能是string类型的, ⽽value可以是string, number, false, true, null, Object对象甚⾄是array数组, 也就是说可以存在嵌套的情况.JSON数组:JSON数组(array)以"["开始, 以"]"结束, 数组中的每⼀个元素可以是string, number, false, true, null, Object对象甚⾄是array数组,数组间的元素使⽤逗号分隔. 如["coolxing", 24, {"street":"huiLongGuan", "city":"beijing", "country":"china"}].1.前⾔JSON数据是android⽹络开发中常见的数据格式。

Android填坑系列:AndroidJSONObject中对key-value为null。。。

Android填坑系列:AndroidJSONObject中对key-value为null。。。

Android填坑系列:AndroidJSONObject中对key-value为null。

在与服务端通过JSON格式进⾏交互过程中,不同版本的JSON库在对于key-value为null情况上的处理不同。

Android⾃带的org.json对key-value都要求不能为null,对于必传的字段需要留意⼀下,尤其是留意value是否可能出现null的情形。

否则导致服务端解析出现问题。

此坑已被踩中,留下⼩记。

下⾯直接看⼀下相应位置源码:1public class JSONObject {23 ......45/**6 * Maps {@code name} to {@code value}, clobbering any existing name/value7 * mapping with the same name. If the value is {@code null}, any existing8 * mapping for {@code name} is removed.9 *10 * @param value a {@link JSONObject}, {@link JSONArray}, String, Boolean,11 * Integer, Long, Double, {@link #NULL}, or {@code null}. May not be12 * {@link Double#isNaN() NaNs} or {@link Double#isInfinite()13 * infinities}.14 * @return this object.15*/16public JSONObject put(String name, Object value) throws JSONException {17if (value == null) {18 nameValuePairs.remove(name);19return this;20 }21if (value instanceof Number) {22// deviate from the original by checking all Numbers, not just floats & doubles23 JSON.checkDouble(((Number) value).doubleValue());24 }25 nameValuePairs.put(checkName(name), value);26return this;27 }282930 String checkName(String name) throws JSONException {31if (name == null) {32throw new JSONException("Names must be non-null");33 }34return name;35 }363738 ......3940 }。

Android读取JSON格式数据

Android读取JSON格式数据

Android读取JSON格式数据Android读取JSON格式数据1. 何为JSON?JSON,全称为JavaScript Object Notation,意为JavaScript对象表⽰法。

JSON 是轻量级的⽂本数据交换格式JSON 独⽴于语⾔JSON 具有⾃我描写叙述性,更易理解相⽐ XML 的不同之处:没有结束标签更短读写的速度更快使⽤数组不使⽤保留字JSON 使⽤ JavaScript 语法来描写叙述数据对象,可是 JSON 仍然独⽴于语⾔和平台。

JSON 解析器和 JSON 库⽀持很多不同的编程语⾔。

2. JSON语法规则以本⽂所使⽤的JSON⽂件内容为例:test.json{"language":[{"id":1, "ide":"Eclipse", "name":"Java"},{"id":2, "ide":"XCode", "name":"Swift"},{"id":3, "ide":"Visual Studio", "name":"C#"}],"cat":"it"}数据在名称/值对中数据由逗号分隔花括号保存对象⽅括号保存数组简单结合样例我们就⾮常清楚地知道JSON的语法规则,每个JSON数据对象都是保存在花括号之中的,所以我们每个JSON数据⽂件都是以花括号开头和结尾的;JSON对象的数据是以键值对的形式存放起来的,键必须为字符串,值能够是例如以下各种类型:数字(整数或浮点数)字符串(在双引號中)逻辑值(true 或 false)数组(在⽅括号⾥)对象(在花括号⾥)null另外,JSON能够嵌套使⽤,JSON对象中能够存放JSON对象,数组中也能够存放JSON对象,仅仅要符合语法规则,⼀切以实际操作须要为主。

使用GSON进行Android中的JSON操作

使用GSON进行Android中的JSON操作

使用GSON进行Android中的JSON操作在Android开发中,JSON(JavaScript Object Notation)的使用非常广泛。

它是一种轻量级的数据交换格式,常用于前后端数据传输和存储。

为了简化JSON数据的解析和生成过程,Google提供了一个开源库GSON,它能够方便地将JSON数据与Java对象进行转换。

本文将介绍如何在Android中使用GSON进行JSON操作。

一、GSON的导入与配置在开始使用GSON之前,我们首先需要导入GSON库并进行相应的配置。

1. 导入GSON库首先,将GSON库的jar包下载,并导入到你的Android项目中。

方式如下:- 在项目的libs目录下,创建一个新的文件夹,命名为gson。

- 将下载的gson.jar文件拷贝到刚创建的gson文件夹中。

- 在Android Studio的build.gradle文件中,添加以下依赖项:```dependencies {implementation files('libs/gson/gson.jar')}```2. 配置GSON库在AndroidManifest.xml文件中,添加以下代码,配置GSON库在应用程序中的使用权限:```<uses-library android:name="org.apache.http.legacy"android:required="false"/>```此外,还需要在AndroidManifest.xml文件中,为我们的应用程序添加网络权限:```<uses-permission android:name="android.permission.INTERNET" /> ```二、JSON数据与Java对象的转换使用GSON进行JSON操作的核心就是将JSON数据转换成Java对象,或将Java对象转换成JSON数据。

android gson用法

android gson用法

android gson用法GSON是Google的JSON解析库,可以将Java对象转化为JSON,也可以将JSON转化为Java对象。

它提供了一种简单方便的方式来处理JSON数据,使得在Android开发中处理JSON数据变得更加轻松。

GSON用法如下:1. 导入GSON库:首先,需要在Android项目中添加GSON库的依赖。

在项目的build.gradle文件中的dependencies{}块中添加如下代码:```gradleimplementation 'com.google.code.gson:gson:2.8.7'```然后,点击Sync按钮同步Gradle以引入依赖。

2. 创建Java对象:在将JSON转化为Java对象之前,首先需要创建一个对应的Java对象,该对象的属性名称和JSON的键名要保持一致。

例如,假设有如下JSON数据:```json{"name": "John","age": 25,"email":"****************"}```则可以创建一个对应的Java对象如下:```javapublic class Person {private String name;private int age;private String email;// 构造方法、属性的getter和setter方法等}```3. 将JSON转化为Java对象:可以使用GSON的fromJson()方法将JSON转化为Java对象。

代码示例如下:```javaString json ="{\"name\":\"John\",\"age\":25,\"email\":\"****************\"}"; Gson gson = new Gson();Person person = gson.fromJson(json, Person.class);```上述代码中,先定义了一个包含JSON数据的字符串json,然后通过Gson的fromJson()方法将其转化为Person对象。

tjsonobject 解析

tjsonobject 解析

文章主题:深入解析tjsonobject的使用方法一、什么是tjsonobject?tjsonobject是一个在Android开发中广泛使用的JSON解析工具,它提供了方便快捷的方法来解析和处理JSON数据。

在Android开发中,我们经常需要从服务器端获取JSON格式的数据,而tjsonobject 就是用来解析这些数据的工具之一。

二、tjsonobject的基本使用方法1. 导入tjsonjar包在使用tjsonobject之前,首先需要导入相应的jar包。

在Android 开发中,我们一般会将tjsonjar包放到libs文件夹下,并在build.gradle文件中添加依赖。

2. 创建tjsonobject对象在解析JSON数据之前,我们首先需要创建一个tjsonobject对象。

创建对象的方法很简单,只需要调用tjsonobject的构造方法即可。

3. 解析JSON数据一般情况下,我们会从服务器端获取JSON格式的数据,并将其转换为字符串。

我们可以调用tjsonobject的相应方法来解析这些数据。

4. 获取JSON数据中的值在解析JSON数据之后,我们可以通过tjsonobject提供的方法来获取JSON数据中的值。

其中,最常用的方法包括:getInt()、getString()、getBoolean()等。

5. 处理JSON数据除了获取JSON数据中的值之外,我们还可以使用tjsonobject来处理JSON数据。

添加新的键值对、删除键值对、获取键值对的个数等。

三、tjsonobject的高级使用方法1. 处理嵌套JSON数据在实际开发中,我们经常会遇到嵌套的JSON数据。

对于这种情况,tjsonobject同样提供了方便快捷的方法来解析和处理数据。

通过递归调用tjsonobject的方法,我们可以轻松处理嵌套JSON数据。

2. 处理数组类型的JSON数据除了对象类型的JSON数据,tjsonobject同样可以处理数组类型的JSON数据。

浅谈Android项目----JSON解析(4种解析技术详解)

浅谈Android项目----JSON解析(4种解析技术详解)

浅谈Android项⽬----JSON解析(4种解析技术详解)json简介1.概念:json全称是javaScript object Notation,是⼀种并轻量级的数据交换格式。

2.特点:1.本质就是具有特定格式的字符串2.json完全独⽴于编程语⾔3.json⽐xml数据传输的有效性要⾼出很多Android系统也原⽣的提供了JSON解析的API,但是它的速度很慢,⽽且没有提供简介⽅便的接⼝来提⾼开发者的效率和降低出错的可能。

因此,通常情况下,我们都会选择其他优秀的JSON解析实现,⽤以替代系统的API,⽬前JSON解析的开源实现主要包括⼀下三种:GsonJackJsonFastJsonJSON对象:JSON数组:先简单的来介绍⼀下原⽣的JSON解析API:他的特点是很⿇烦,对于复杂的json数据解析很容易出错使⽤:解析JSON对象的API:JsonObjectJSONObject(String json);将Json字符串解析成Json对象;getXxx(String name) ;根据name在json对象中得到相应的value值;private String ObjectanalysisTest(String string) {try {JSONObject jsonObject = new JSONObject(string);String name = jsonObject.getString("name");int age = jsonObject.optInt("age");String sex = jsonObject.optString("sex");return "name:" + name + " age:" + age + " sex:" + sex;} catch (JSONException e) {e.printStackTrace();}return null;}解析Json数组的API:JSONArrayJSONArray(String json);将json字符串解析成json数组;int length();得到json数组中元素的个数;getXxx(String name) ;根据name得到json数组中对应的元素数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android中JSON详细总结1、JSON(JavaScript Object Notation) 定义:一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。

业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。

JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。

– 2、JSON的结构:(1) Name/Value Pairs(无序的):类似所熟知的Keyed list、 Hash table、Disctionary和Associative array。

在Android平台中同时存在另外一个类 "Bundle",某种程度上具有相似的行为。

(2) Array(有序的):一组有序的数据列表。

对象对象是一个无序的Name/Value Pairs集合。

{name:value , name:value , name:value .... }例子:{ "name":"小猪","age":20 }ArrayArray是值(value)的有序集合。

[ value , value , value ...... ]值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。

这些结构可以嵌套。

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。

一个字符(character)即一个单独的字符串(character string)。

例如:\ + " \ / b f n r t u 进行转义。

例子1: Array里面包含对象(object)[ {"id":1,"name":"小猪" ,"age”:22} , {"id":2,"name":"小猫","age”:23} , .......]例子2:同样对象(object)中可以包含Array(1)一个对象包含1个数组,2个子对象{"root":[{"id":"001","name":"小猪"},{"id":"002","name":"小猫"},{"id":"003","name":"小狗"}],"total":3,"success":true}(2)也可以对象嵌套子对象,子对象再嵌套数组{"calendar":{"calendarlist":[{"id":"001","name":"小猪"},{"id":"002","name":"小猫"}]}}总之,格式多种多样,可以互相嵌套--------------------------------------------------------------------------------------------在Android中包含四个与JSON相关的类和一个Exceptions:JSONArrayJSONObjectJSONStringerJSONTokenerJSONException(1)JSONObject:这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。

它对外部(External:应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{“JSON”: “Hello, World”},最外被大括号包裹,其中的Key和Value 被冒号”:”分隔)。

其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put(“JSON”, “Hello, World!”),在Key和Value之间是以逗号”,”分隔。

Value的类型包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。

有两个不同的取值方法:get(): 在确定数值存在的条件下使用,否则当无法检索到相关Key时,将会抛出一个Exception信息。

opt(): 这个方法相对比较灵活,当无法获取所指定数值时,将会返回一个默认数值,并不会抛出异常。

(2)JSONArray:它代表一组有序的数值。

将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如:[value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。

这个类的内部同样具有查询行为,get()和opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。

同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。

(3)JSONStringer:根据官方的解释,这个类可以帮助快速和便捷的创建JSONtext。

其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntaxrules)创建JSON text。

每个JSONStringer实体只能对应创建一个JSON text。

根据下边的实例来了解其它相关信息:Java代码1.String myString = new JSONStringer().object()2..key("name")3..value("小猪")4..endObject()5..toString();结果是一组标准格式的JSON text:{"name" : "小猪"}其中的.object()和.endObject()必须同时使用,是为了按照Object标准给数值添加边界。

同样,针对数组也有一组标准的方法来生成边界.array()和.endArray()。

(4)JSONTokener:这个是系统为JSONObject和JSONArray构造器解析JSON source string的类,它可以从source string中提取数值信息。

JSONException:是类抛出的异常信息。

下面引用一个完整的应用实例:应用JSONObject存储Map类型数值:Java代码1.public static JSONObject getJSON(Map map) {2.Iterator iter = map.entrySet().iterator();3.JSONObject holder = new JSONObject();4.while (iter.hasNext()) {5.Map.Entry pairs = (Map.Entry) iter.next();6.String key = (String) pairs.getKey();7.Map m = (Map) pairs.getValue();8.JSONObject data = new JSONObject();9.try {10.Iterator iter2 = m.entrySet().iterator();11.while (iter2.hasNext()) {12.Map.Entry pairs2 = (Map.Entry) iter2.next();13.data.put((String) pairs2.getKey(), (String) pairs214..getValue());15.}16.holder.put(key, data);17.} catch (JSONException e) {18.Log.e("Transforming", "There was an error packaging JSON", e);19.}20.}21.return holder;22.}下面是详细的例子:Java代码1.import java.io.ByteArrayOutputStream;2.import java.io.InputStream;3.import .*;4.import java.util.ArrayList;5.import java.util.HashMap;6.import java.util.List;7.import java.util.Map;8.import org.json.JSONArray;9.import org.json.JSONObject;10.import android.util.Log;11.12.public class JSON {13.14.15./**16.* 获取"数组形式"的JSON数据,17.* 数据形式:[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]18.* @param path 网页路径19.* @return 返回List20.* @throws Exception21.*/22.public static List<Map<String, String>> getJSONArray(String path)throws Exception {23.String json = null;24.List<Map<String, String>> list = new ArrayList<Map<String,String>>();25.Map<String, String> map = null;26.URL url = new URL(path);27.HttpURLConnection conn = (HttpURLConnection)url.openConnection();// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.28.conn.setConnectTimeout(5 * 1000); // 单位是毫秒,设置超时时间为5秒29.conn.setRequestMethod("GET"); // HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET30.if (conn.getResponseCode() == 200) {// 判断请求码是否是200码,否则失败31.InputStream is = conn.getInputStream(); // 获取输入流32.byte[] data = readStream(is); // 把输入流转换成字符数组33.json = new String(data); // 把字符数组转换成字符串34.35.//数据形式:[{"id":1,"name":"小猪","age":22},{"id":2,"name":"小猫","age":23}]36.JSONArray jsonArray = new JSONArray(json); //数据直接为一个数组形式,所以可以直接用android提供的框架JSONArray读取JSON数据,转换成Array37.38.for (int i = 0; i < jsonArray.length(); i++) {39.JSONObject item = jsonArray.getJSONObject(i); //每条记录又由几个Object对象组成40.int id = item.getInt("id"); // 获取对象对应的值41.String name = item.getString("name");42.43.map = new HashMap<String, String>(); // 存放到MAP里面44.map.put("id", id + "");45.map.put("name", name);46.list.add(map);47.}48.}49.50.// ***********测试数据******************51.for (Map<String, String> list2 : list) {52.String id = list2.get("id");53.String name = list2.get("name");54.Log.i("abc", "id:" + id + " | name:" + name);55.}56.57.return list;58.}59.60./**61.* 获取"对象形式"的JSON数据,62.* 数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]}63.* @param path 网页路径64.* @return 返回List65.* @throws Exception66.*/67.public static List<Map<String, String>> getJSONObject(String path)throws Exception {68.List<Map<String, String>> list = new ArrayList<Map<String,String>>();69.Map<String, String> map = null;70.URL url = new URL(path);71.HttpURLConnection conn = (HttpURLConnection)url.openConnection();// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.72.conn.setConnectTimeout(5 * 1000); // 单位是毫秒,设置超时时间为5秒73.conn.setRequestMethod("GET"); // HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET74.if (conn.getResponseCode() == 200) {// 判断请求码是否是200码,否则失败75.InputStream is = conn.getInputStream(); // 获取输入流76.byte[] data = readStream(is); // 把输入流转换成字符数组77.String json = new String(data); // 把字符数组转换成字符串78.79.80.//数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]}81.JSONObject jsonObject=new JSONObject(json); //返回的数据形式是一个Object类型,所以可以直接转换成一个Object82.int total=jsonObject.getInt("total");83.Boolean success=jsonObject.getBoolean("success");84.Log.i("abc", "total:" + total + " | success:" + success); //测试数据85.86.JSONArray jsonArray = jsonObject.getJSONArray("arrayData");//里面有一个数组数据,可以用getJSONArray获取数组87.for (int i = 0; i < jsonArray.length(); i++) {88.JSONObject item = jsonArray.getJSONObject(i); // 得到每个对象89.int id = item.getInt("id"); // 获取对象对应的值90.String name = item.getString("name");91.92.map = new HashMap<String, String>(); // 存放到MAP里面93.map.put("id", id + "");94.map.put("name", name);95.list.add(map);96.}97.}98.99.// ***********测试数据******************100.101.for (Map<String, String> list2 : list) {102.String id = list2.get("id");103.String name = list2.get("name");104.Log.i("abc", "id:" + id + " | name:" + name);105.}106.107.return list;108.}109.110.111./**112.* 获取类型复杂的JSON数据113.*数据形式:114.{"name":"小猪",115."age":23,116."content":{"questionsTotal":2,117."questions": [ { "question": "what's your name?", "answer": "小猪"},{"question": "what's your age", "answer": "23"}] 118.}119.}120.* @param path 网页路径121.* @return 返回List122.* @throws Exception123.*/124.public static List<Map<String, String>> getJSON(String path) throws Exception {125.List<Map<String, String>> list = new ArrayList<Map<String, String>>();126.Map<String, String> map = null;127.URL url = new URL(path);128.HttpURLConnection conn = (HttpURLConnection)url.openConnection();// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.129.conn.setConnectTimeout(5 * 1000); // 单位是毫秒,设置超时时间为5秒130.conn.setRequestMethod("GET"); // HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET131.if (conn.getResponseCode() == 200) {// 判断请求码是否是200码,否则失败132.InputStream is = conn.getInputStream(); // 获取输入流133.byte[] data = readStream(is); // 把输入流转换成字符数组134.String json = new String(data); // 把字符数组转换成字符串135.136.137./*数据形式:138.{"name":"小猪",139."age":23,140."content":{"questionsTotal":2,141."questions": [ { "question": "what's your name?", "answer": "小猪"},{"question": "what's your age", "answer": "23"}] 142.}143.}144.*/145.JSONObject jsonObject=new JSONObject(json); //返回的数据形式是一个Object类型,所以可以直接转换成一个Object146.String name=jsonObject.getString("name");147.int age=jsonObject.getInt("age");148.Log.i("abc", "name:" + name + " | age:" + age); //测试数据149.150.JSONObjectcontentObject=jsonObject.getJSONObject("content"); //获取对象中的对象151.StringquestionsTotal=contentObject.getString("questionsTotal"); //获取对象中的一个值152.Log.i("abc", "questionsTotal:" + questionsTotal); //测试数据153.154.JSONArraycontentArray=contentObject.getJSONArray("questions"); //获取对象中的数组155.for (int i = 0; i < contentArray.length(); i++) {156.JSONObject item = contentArray.getJSONObject(i); // 得到每个对象157.String question = item.getString("question"); // 获取对象对应的值158.String answer = item.getString("answer");159.160.map = new HashMap<String, String>(); // 存放到MAP里面161.map.put("question", question);162.map.put("answer", answer);163.list.add(map);164.}165.}166.167.// ***********测试数据******************168.169.for (Map<String, String> list2 : list) {170.String question = list2.get("question");171.String answer = list2.get("answer");172.Log.i("abc", "question:" + question + " | answer:" + answer); 173.}174.175.return list;176.}177.178.179.180.181./**182.* 把输入流转换成字符数组183.* @param inputStream 输入流184.* @return 字符数组185.* @throws Exception186.*/187.public static byte[] readStream(InputStream inputStream) throws Exception {188.ByteArrayOutputStream bout = new ByteArrayOutputStream(); 189.byte[] buffer = new byte[1024];190.int len = 0;191.while ((len = inputStream.read(buffer)) != -1) {192.bout.write(buffer, 0, len); 193.}194.bout.close();195.inputStream.close();196.197.return bout.toByteArray(); 198.}199.200.}。

相关文档
最新文档