文档库 最新最全的文档下载
当前位置:文档库 › Android中的JSON详细总结1

Android中的JSON详细总结1

Android中的JSON详细总结1
Android中的JSON详细总结1

1、JSON(JavaScript Object Notation) 定义:

一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。– https://www.wendangku.net/doc/9d6775657.html,

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 }

Array

Array是值(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:JSONArray

JSONObject

JSONStringer

JSONTokener

JSONException

(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。

根据下边的实例来了解其它相关信息:

String myString = new JSONStringer().object()

.key("name")

.value("小猪")

.endObject()

.toString();

果是一组标准格式的JSON text:{"name" : "小猪"}

其中的.object()和.endObject()必须同时使用,是为了按照Object标准给数值添加边界。同样,针对数组也有一组标准的方法来生成边界.array()和.endArray()。

(4)JSONTokener:

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

JSONException:

是https://www.wendangku.net/doc/9d6775657.html,类抛出的异常信息。

下面引用一个完整的应用实例:

应用JSONObject存储Map类型数值:

public static JSONObject getJSON(Map map) {

Iterator iter = map.entrySet().iterator();

JSONObject holder = new JSONObject();

while (iter.hasNext()) {

Map.Entry pairs = (Map.Entry) iter.next();

String key = (String) pairs.getKey();

Map m = (Map) pairs.getValue();

JSONObject data = new JSONObject();

try {

Iterator iter2 = m.entrySet().iterator();

while (iter2.hasNext()) {

Map.Entry pairs2 = (Map.Entry) iter2.next();

data.put((String) pairs2.getKey(), (String) pairs2

.getValue());

}

holder.put(key, data);

} catch (JSONException e) {

Log.e("Transforming", "There was an error packaging JSON", e);

}

}

return holder;

}

下面是详细的例子:

import java.io.ByteArrayOutputStream;

import java.io.InputStream;

import https://www.wendangku.net/doc/9d6775657.html,.*;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.json.JSONArray;

import org.json.JSONObject;

import android.util.Log;

public class JSON {

/**

* 获取"数组形式"的JSON数据,

* 数据形式:[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]

* @param path 网页路径

* @return返回List

* @throws Exception

*/

public static List> getJSONArray(String path) throws Exception {

String json = null;

List> list = new ArrayList>();

Map map = null;

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.

conn.setConnectTimeout(5 * 1000); // 单位是毫秒,设置超时时间为5秒

conn.setRequestMethod("GET"); // HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET

if (conn.getResponseCode() == 200) {// 判断请求码是否是200码,否则失败

InputStream is = conn.getInputStream(); // 获取输入流

byte[] data = readStream(is); // 把输入流转换成字符数组

json = new String(data); // 把字符数组转换成字符串

//数据形式:[{"id":1,"name":"小猪","age":22},{"id":2,"name":"小猫","age":23}]

JSONArray jsonArray = new JSONArray(json); //数据直接为一个数组形式,所以可以直接用android提供的框架JSONArray读取JSON 数据,转换成Array

for (int i = 0; i < jsonArray.length(); i++) {

JSONObject item = jsonArray.getJSONObject(i); //每条记录又由几个Object对象组成

int id = item.getInt("id"); // 获取对象对应的值

String name = item.getString("name");

map = new HashMap(); // 存放到MAP里面

map.put("id", id + "");

map.put("name", name);

list.add(map);

}

}

// ***********测试数据******************

for (Map list2 : list) {

String id = list2.get("id");

String name = list2.get("name");

Log.i("abc", "id:" + id + " | name:" + name);

}

return list;

}

/**

* 获取"对象形式"的JSON数据,

* 数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]}

* @param path 网页路径

* @return返回List

* @throws Exception

*/

public static List> getJSONObject(String path) throws Exception {

List> list = new ArrayList>();

Map map = null;

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.

conn.setConnectTimeout(5 * 1000); // 单位是毫秒,设置超时时间为5秒

conn.setRequestMethod("GET"); // HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET

if (conn.getResponseCode() == 200) {// 判断请求码是否是200码,否则失败

InputStream is = conn.getInputStream(); // 获取输入流

byte[] data = readStream(is); // 把输入流转换成字符数组

String json = new String(data); // 把字符数组转换成字符串

//数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]} JSONObject jsonObject=new JSONObject(json); //返回的数据形式是一个Object类型,所以可以直接转换成一个Object int total=jsonObject.getInt("total");

Boolean success=jsonObject.getBoolean("success");

Log.i("abc", "total:" + total + " | success:" + success); //测试数据

JSONArray jsonArray = jsonObject.getJSONArray("arrayData");//里面有一个数组数据,可以用getJSONArray获取数组for (int i = 0; i < jsonArray.length(); i++) {

JSONObject item = jsonArray.getJSONObject(i); // 得到每个对象

int id = item.getInt("id"); // 获取对象对应的值

String name = item.getString("name");

map = new HashMap(); // 存放到MAP里面

map.put("id", id + "");

map.put("name", name);

list.add(map);

}

}

// ***********测试数据******************

for (Map list2 : list) {

String id = list2.get("id");

String name = list2.get("name");

Log.i("abc", "id:" + id + " | name:" + name);

}

return list;

}

/**

* 获取类型复杂的JSON数据

*数据形式:

{"name":"小猪",

"age":23,

"content":{"questionsTotal":2,

"questions": [ { "question": "what's your name?", "answer": "小猪"},{"question": "what's your age", "answer": "23"}]

}

}

* @param path 网页路径

* @return返回List

* @throws Exception

*/

public static List> getJSON(String path) throws Exception {

List> list = new ArrayList>();

Map map = null;

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.

conn.setConnectTimeout(5 * 1000); // 单位是毫秒,设置超时时间为5秒

conn.setRequestMethod("GET"); // HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,

因为默认为GET

if (conn.getResponseCode() == 200) {// 判断请求码是否是200码,否则失败

InputStream is = conn.getInputStream(); // 获取输入流

byte[] data = readStream(is); // 把输入流转换成字符数组

String json = new String(data); // 把字符数组转换成字符串

/*数据形式:

{"name":"小猪",

"age":23,

"content":{"questionsTotal":2,

"questions": [ { "question": "what's your name?", "answer": "小猪"},{"question": "what's your age", "answer": "23"}]

}

}

*/

JSONObject jsonObject=new JSONObject(json); //返回的数据形式是一个Object类型,所以可以直接转换成一个Object String name=jsonObject.getString("name");

int age=jsonObject.getInt("age");

Log.i("abc", "name:" + name + " | age:" + age); //测试数据

JSONObject contentObject=jsonObject.getJSONObject("content"); //获取对象中的对象

String questionsTotal=contentObject.getString("questionsTotal"); //获取对象中的一个值

Log.i("abc", "questionsTotal:" + questionsTotal); //测试数据

JSONArray contentArray=contentObject.getJSONArray("questions"); //获取对象中的数组

for (int i = 0; i < contentArray.length(); i++) {

JSONObject item = contentArray.getJSONObject(i); // 得到每个对象

String question = item.getString("question"); // 获取对象对应的值

String answer = item.getString("answer");

map = new HashMap(); // 存放到MAP里面

map.put("question", question);

map.put("answer", answer);

list.add(map);

}

}

// ***********测试数据******************

for (Map list2 : list) {

String question = list2.get("question");

String answer = list2.get("answer");

Log.i("abc", "question:" + question + " | answer:" + answer);

}

return list;

}

/**

* 把输入流转换成字符数组

* @param inputStream 输入流

* @return字符数组

* @throws Exception

*/

public static byte[] readStream(InputStream inputStream) throws Exception { ByteArrayOutputStream bout = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int len = 0;

while ((len = inputStream.read(buffer)) != -1) {

bout.write(buffer, 0, len);

}

bout.close();

inputStream.close();

return bout.toByteArray();

}

}

Android利用Gson实现对象和Json数据的相互转换

Android利用Gson实现对象和Json数据的相互转换 MainActitity如下: package cc.test; import android.app.Activity; import android.os.Bundle; /** * Demo描述: * 利用Gson实现对象和Json数据的相互转换 * * Demo描述: * 通过一个网络请求,获取JSON数据 * * 注意: * 1 网络请求的参数是JSON格式的数据 * 2 请求结果返回的亦是JSON格式的数据 * */ public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.wendangku.net/doc/9d6775657.html,yout.main); init(); } private void init(){ new Thread(){ public void run(){ GetJsonDataByPost httpJsonPost=new GetJsonDataByPost(); String[] pathArray=httpJsonPost.getPathArray("dev0003"); for(int i=0;i

[Android开发] Json解析工具类,一个类搞定Json的解析

[Android开发] Json解析工具类,一个 类搞定Json的解析 一、简介 利用递归的方式反射解析到bean里面 二、详细代码 1、Json格式 例如服务器指定规定json格式为: { "code": "……" , // 返回代号,预留字段,默认返回null "type":"ERROR", // 返回类型,表示操作是成功或失败 "desc":"……", // 返回描述,描述性文字,主要保存用于弹窗显示的文字 "action":"SHOW", //返回操作,该操作值提供给终端使用,用于决定当前收到返回后的操作 "data": "……" // 返回数据,根据请求上传的参数,返回对应的数据,或返回null } 对应的数据在data里面,data里面的key对应一个bean,例如一个列表数据: { "desc":"查询成功", "data":{ "diseaseList":[ { "xmlName":"精神病评估", "xmlId":"1066", "category":"symptom" }, { "xmlName":"对学习困难和认知延迟的评估", "xmlId":"884", "category":"symptom" }, { "xmlName":"疲乏的评估", "xmlId":"571", "category":"symptom"

}, { "xmlName":"痴呆的评估", "xmlId":"242", "category":"symptom" }, { "xmlName":"非故意性体重减轻评估", "xmlId":"548", "category":"symptom" } ] }, "action":null, "code":"", "type":"SUCCESS" } 2、定义数据Bean类 上面的list的bean定义为DiseaseList.Java public class DiseaseList { /** * xmlName : 分裂情感性障碍 * xmlId : 1199 * category : disease */ private String xmlName; //症状名字 private String xmlId; //症状名字 private String category; //分类的英文名 private String letter = ""; //字母,转为拼音后在这里添加 public String getXmlName() { return xmlName; } public void setXmlName(String xmlName) { this.xmlName = xmlName; }

Android中JSON详细总结

Android中JSON详细总结 1、JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其 提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。– https://www.wendangku.net/doc/9d6775657.html, 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 } Array Array是值(value)的有序集合。[ value , value , value ...... ] 值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。例如:\ + " \ / b f n r t u 进行转义。

android程序经典架构

Android 程序框架设计 1、主要说明 框架说明: 1 基于HTTP 协议进行通信 2 利用json 格式传输数据。 客户端以POST 方式用UTF-8编码提交网络请求,主要模块有通用framework,view 视图,业务逻辑(系统调度)模块,本地数据处理模块,http 模块,工具类。http 请求解析,传输到业务处理模块,然后本地处理数据模块进行文件保存,若展示则 通过业务处理模块,最终在view 视图上显示。 2、设计细项 2.1 共通类的设计 概念完整性: 1 2 3 4 5 - 开发过程中,需求、设计、编码的一致性 - 整个程序具有统一的风格,比如对话框样式,按钮风格,色调等UI 元素 - 整个程序具体统一的结构,比如不同模块访问网络,它们的调用方式一致,例如异步访问都用回调方式通知结果,相同的功能应该提取成共通模块。 - 开发人员能很好的执行需求人员和设计人员的意图。 - 有完整的文档,需求文档,设计文档,测试文档,处理流程的文档等。 2.1.1 Widget 设计 尽量在style 文件中定义样式。 TextView EditText Button Title bar Tool bar … ### 为什么要提供这些共通控件? ### 统一字体大小,如App 字体不随系统字体变化而变化 统一UI 式样,如Button , EditText 具有相同的背景等 复用代码

2.1.2 Adapter Items 根据式样,提取需要在AdapterView 中显示的Item 简单的复合布局 自绘制,从而提高滑动性能 - ListView 中放Gallery 时,提高上下滑动性能 - 尽量优化绘制 ### 数据驱动 ### Adapter Items 提供核心的方法 - setData(Object data) - getData(); Adapter#getView 实现更加简单 - 实现简单 - 不会因为UI 变化而变化 下面代码示例了Adapter#getView()方法的实现,它返回BookView ,BookView 提供方法来接收数据,至于BookView 的显示,则根据设置的数据来显示,这就是数据驱动UI 。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Override public View getView(int position, View convertView, ViewGroup parent) { if (null == convertView) { convertView = new BookView(getContext()); convertView.setLayoutParameter(new https://www.wendangku.net/doc/9d6775657.html,youtParameter(150, 150)); } Book book = m_bookList.get(position); BookView bookView = (BookView)convertView; bookView.setBook(book); return convertView; } 2.1.3 Dialog 扩展于Dialog 类 提供Dialog 关闭的事件 Dialog 的高度随内容的变化而变化 可以设置按钮的文字,可见性,字体等方法

Android手机客户端和服务器交互开发实例

本文介绍了如何使用Android搭建客户端,实现手机和服务器的交互。让我们了解如何采用SSH框架,把服务器端的信息用JSON的形式发送到手机端。 AD:笔者以前是学的Java EE,由于项目需要要开发Android,所以临时补了一个多星期,主要是手机端和服务器端交互,双向开发的。 首先在服务器端,我采用的是SSH框架,struts 2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts 2,所以我就用装了一个JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。以下是代码: 首先,在服务器端搭建好SSH框架,具体细节就不在陈述。struts.xml配置如下: 1. 2. 3.result 4. 5. 6. 7. 8. 9. result 10. 11. 手机端的代码如下: 首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的: 1.packagecom.jclick.cache; 2. https://www.wendangku.net/doc/9d6775657.html,er; 4. 5.publicclassCache{ 6. 7.privateUserUser; 8. 9.privateCache(){ 10. 11.} 12./**构造单例*/ 13.Private static class CacheHolder{ 14.Private static final CacheINSTANCE=newCache(); 15.} 16.Public Cache getInstance(){ 17.returnCacheHolder.INSTANCE; 18.} 19.publicUsergetUser(){

androidjson解析及简单例子(转载).

JSON 的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持,从而可以在不同平台间进行数据交换。 JSON 采用兼容性很高的文本格式,同时也具备类似于 C 语言体系的行为。– https://www.wendangku.net/doc/9d6775657.html, JSON Vs XML 1.JSON 和 XML 的数据可读性基本相同 2.JSON 和 XML 同样拥有丰富的解析手段 3.JSON 相对于 XML 来讲,数据的体积小 4.JSON 与 JavaScript 的交互更加方便 5.JSON 对数据的描述性比 XML 较差 6.JSON 的速度要远远快于 XML android2.3提供的 json 解析类 android 的 json 解析部分都在包 org.json 下,主要有以下几个类: JSONObject :可以看作是一个 json 对象 , 这是系统中有关 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 。

Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析

Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析 Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析 在开发客户端与服务端的应用当中,数据交换接口通常都是通过XML格式来进行数据交换的。近年来,随着AJAX技术的兴起,JSON作为一种轻量级的数据交换格式,以其易于阅读和编写的优点,也越来越多的被使用到各个项目中。在OPhone SDK中,也提供了JSON 的类库方便对JSON格式的数据进行处理。本文将快速讲解JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行JSON 格式数据的处理。 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,非常适合于服务器与客户端的交互。JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。 和XML 一样,JSON 也是基于纯文本的数据格式。由于JSON 天生是为JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用JSON 传输一个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。 String,Number 和Boolean 用JSON 表示非常简单。例如,用JSON 表示一个简单的字符串“ abc ”,其格式为:"abc"。 除了字符",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他Unicode 字符可以直接输出。下图是一个String 的完整表示结构: 图1.String的完整表示结构 一个Number 可以根据整型或浮点数表示如下: 图2.Number 的表示结构 这与绝大多数编程语言的表示方法一致,例如: 12345(整数) -3.9e10(浮点数)

Android移动终端开发大作业

Android移动终端开发大作业 一、作业要求 ●1人一组,独立完成。 ●按照个人兴趣方向,自选题目,完成系统。 ●在规定的时间里完成系统主体功能,程序比较稳定的运行。 ●手机界面要求简洁、美观,功能不能过于简单,应具备一定的实用性。 ●至少要3个Activity以上。 ●必须使用自定义Listview,要使用Sqlite数据库或API调用与数据解析(API 可使用聚合数据(https://https://www.wendangku.net/doc/9d6775657.html,/)、API Store(https://www.wendangku.net/doc/9d6775657.html,/)或apix(https://www.wendangku.net/doc/9d6775657.html,/)提供的API,如有能力也可自行开发服务器端)。 ●欢迎好的创意作品、实用作品,评分时会适当加分。 ●需提交设计报告,设计报告格式见附件,按附件顺序装订(包括评分表) ●大作业成绩从工作量、功能点、创新性、实用性、报告的字数、质量及规范 度等方面的成绩构成 二、注意事项 ●压缩包内作业内容包括两部分: ①作业项目文件夹,项目必须能够调试通过,android平台选择选择2.2或是2.3.3。 ②作业设计说明,word文件。 ●可以借鉴网络上的代码,但不可全部照搬。 不许相互抄袭,一旦发现成绩为零。 Android平台移动应用开发 大作业 基于Android的新闻浏览软件的设计与 题目 实现

学院信息工程学院 专业信息工程 班级信息1303 姓名杏允升 指导教师秦珀石 2015 年12 月10 日 一、 ................................................................................................................. 错误!未定义书签。 二、概述 (3) 三、关键技术 (4) 四、概要设计 (8) 五、系统实现 (9) 六、心得体会.................................................................................................. 错误!未定义书签。

android使用JSON进行网络数据交换

使用JSON进行网络数据交换 网络编程, 2009-12-18 17:29:44 标签: 在开发客户端与服务端的应用当中,数据交换接口通常都是通过XML格式来进行数据交换的。近年来,随着AJAX技术的兴起,JSON作为一种轻量级的数据交换格式,以其易于阅读和编写的优点,也越来越多的被使用到各个项目中。在Android SDK中,也提供了JSON的类库方便对JSON格式的数据进行处理。本文将快速讲解JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行JSON 格式数据的处理。 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,非常适合于服务器与客户端的交互。JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。 和XML 一样,JSON 也是基于纯文本的数据格式。由于JSON 天生是为JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用JSON 传输一个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。 String,Number 和Boolean 用JSON 表示非常简单。例如,用JSON 表示一个简单的字符串“ abc ”,其格式为:"abc"。 除了字符",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他Unicode 字符可以直接输出。下图是一个String 的完整表示结构:

图1.String的完整表示结构一个Number 可以根据整型或浮点数表示如下:

不错的 [置顶]Android中的JSON详细总结

[置顶]Android中的JSON详细总结 分类:Android数据解析2011-04-04 14:43 701人阅读评论(1) 收藏举报1、JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。– https://www.wendangku.net/doc/9d6775657.html, 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 } Array Array是值(value)的有序集合。[ value , value , value ...... ] 值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。例如:/ + " / / b f n r t u 进行转义。

android和服务器的代码+步骤详细

Android JSON网络数据交换 2011-10-30 13:33:33 我来说两句 收藏我要投稿 [字体:小大] 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,非常适合于服务器与客户端的交互。JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。 和XML 一样,JSON 也是基于纯文本的数据格式。由于JSON 天生是为JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用JSON 传输一个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。 首先创建一个Web项目ServletTest 1:我们创建一个名为User的JavaBean作为用户对象类,用来保存演示数据 2:我们创建一个ServletDemo的Servlet类作为服务器的接口程序

3:把该Servlet部署到Tomcat下,发布项目需要修改web.xml 4:发布成功后,在浏览器输入地址http://localhost:8080/ServletTest/Test,输出如下结果: 5:准备好服务器的接口后,我们准备写客户端的程序,创建一个android项目 我们创建一个名为JSONActivity的Activity类 首先我们修改UI布局layout/main.xml 6:实现客户端获取网络数据的核心代码:

因为要访问外部网络,所以要子啊AndroidManifest.xml文件里增加一行安全许可:

Android中的JSON详细总结1

1、JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。– https://www.wendangku.net/doc/9d6775657.html, 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 } Array Array是值(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":"小猫"} ] } }

使用JSON进行网络数据交换传输 详细

使用JSON进行网络数据交换- Android 2011年05月11日星期三15:04 在开发客户端与服务端的应用当中,数据交换接口通常都是通过XML格式来进行数据交换的。近年来,随着AJAX技术的兴起,JSON作为一种轻量级的数据交换格式,以其易于阅读和编写的优点,也越来越多的被使用到各个项目中。在OPhoneSDK中,也提供了JSON 的类库方便对JSON格式的数据进行处理。本文将快速讲解JSON格式,并通过代码示例演示如何分别在客户端和服务器端进行JSON 格式数据的处理。 什么是JSON JSON(JavaScript ObjectNotation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,非常适合于服务器与客户端的交互。JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。和XML 一样,JSON 也是基于纯文本的数据格式。由于JSON 天生是为JavaScript 准备的,因此,JSON的数据格式非常简单,您可以用JSON 传输一个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。 String,Number 和Boolean 用JSON 表示非常简单。例如,用JSON 表示一个简单的字符串“ abc ”,其格式为:"abc"。 除了字符",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他Unicode 字符可以直接输出。下图是一个String 的完整表示结构: 图1.String的完整表示结构 一个Number 可以根据整型或浮点数表示如下:

Android下使用JSON实现HTTP请求

Android下使用JSON实现HTTP请求最近在用Android调用Web服务,开始准备用WebService来调用,用jws的WebService方式写好后发现Android调用的时候很多问题不知道咋解决了,后来 发现有一个更好的办法,就是采用HttpPost来与后台交互。 下面就说一下相关的JSON的操作: 不得不说,JSON 格式的确是非常美妙的,速度快而且简化了很多操作在Android 下,Android SDK 已经为我们封装好了整个与 JSON 有关的操作,使用非常方便 以下就是一个标准的 JSON 请求的实现过程: HttpPost request = newHttpPost(url); // 先封装一个 JSON 对象 JSONObject param = newJSONObject(); param.put("name", "rarnu"); param.put("password", "123456"); // 绑定到请求 Entry StringEntity se = newStringEntity(param.toString()); request.setEntity(se); // 发送请求 HttpResponse httpResponse = newDefaultHttpClient().execute(request); // 得到应答的字符串,这也是一个 JSON 格式保存的数据 String retSrc = EntityUtils.toString(httpResponse.getEntity()); // 生成 JSON 对象 JSONObject result = newJSONObject( retSrc);

安卓与web服务端数据交互的接口定义文档

Table of Contents 目录 1简介 (3) 2终端与系统平台接口简略图 (3) 2.1终端与系统平台接口描述图 (3) 3WEBServer与DBDao接口(API-2接口) (3) 4PAD与WEB Server平台接口(API-1接口) (3) 4.1API-1接口描述 (3) 4.2用户登录 (4) 4.3首页------获得推荐的模块图片 (5) 4.4物业---公告板---分页获得(大家/个人)公告 (5) 4.5物业---公告板---获得一个公告 (6) 4.6物业---公告板---发布公告 (6) 4.7物业---公告板---编辑公告 (7) 4.8物业---通知—分页获得新通知 (7) 4.9物业---通知—获得一条通知 (8) 4.10物业---账单—获得某年某月的账单 (8) 4.11商城---商品中心--获得商品类别(大类别/子类别) (9) 4.12商城---商品中心--获得商品列表 (10) 4.13商城---商品中心--获得多个/单个推荐商品 (11) 4.14商城---商品中心--获得单个商品详细 (12) 4.15商城---商品中心--添加订单 (13) 4.16商城---我的账户—获得最近的一条账单和账单详情 (13) 4.17商城---我的账户—获得消费信息 (14) 4.18商城---我的账户- -生成商品类型的报表 (14) 4.19商城---我的账户- -生成年度每个月消费情况的报表 (15)

1 简介 本文档旨在对终端与系统平台接口技术规范进行说明,用于指导开发人员进行相关业务的开发。 2 终端与系统平台接口简略图 2.1 终端与系统平台接口描述图 PAD(Terminal)与系统平台有以下接口: ●与Web平台的接口(API-1) WEB(Server)与系统平台有以下接口: ●与DBDao的接口(API-2) 3 WEBServer与DBDao接口(API-2接口) 通过DBDao接口对DB进行操作 4 PAD与WEB Server平台接口(API-1接口) 4.1 API-1接口描述 PAD与WEB Server平台之间具有以下接口模块: (1).用户登录接口 (2).首页信息实时更新接口 (3).物业-公告板接口 (4).物业-通知接口 (5).物业-管家接口 (6).物业-账单接口 (7).用户登出接口 (8).商城-主页接口 (9).商城-推荐商品接口 (10).商城-添加订单接口 (11).商城-支付接口 (12).娱乐-推荐电影海报接口 . . . . . .

Android100道选择题

Android 四大组件选择题 选择题 1.下面不是Android四大组件之一的(B ) A. Activity B.Intent C. Service D. ContentProvider 2. 下面关于广播叙述错误的是(A) A. 广播是Android四大组件之一 B. BroadcastReceiver有两种注册方式,静态注册和动态注册 C. 静态注册需要在Mainfest.xml中配置 D. 动态注册需要在应用退出时候接触广播的注册。 3. 下面关于BroadcastReceiver错误的是(B): A. BroadcastReceiver有两种注册方式,静态注册和动态注册。 B. BroadcastReceiver必须在AndroidMainfest文件中声明 C. BroadcastReceiver的使用,一定有一方发送广播,有一方监听注册广播,onReceive方法才会被调用。 D. 广播发送的Intent都是隐式启动。 4. 下面关于谁先接收广播顺序错误的是(B) A. 有序广播,优先级高的先接收 B. 有序广播,同优先级的动静态广播接收器,静态优先于动态。 C. 有序广播,同优先级的动态广播接收器,先注册的大于后注册的。 D. 普通广播时,无视优先级,动态广播接收器优先于静态广播接收器 5. 下面关于广播说法错误的是(B) A. 广播分为有序广播和无序广播 B. 使用abortBroadcast方法可以中断所有广播的传递。 C. 广播注册方式分为动态和静态 D. sendOrderBroadcast用来向系统广播有序事件,send Broadcast()是用来广播无序事件。 6.下列关于Intent启动组件说法错误的是(C) A.startActivity( ) B. startService( ) C. startBroadcastReceiver() D.startActivityForResult() 7.对于广播的发送,Intent的启动方式是(B ) A.显式启动 B. 隐式启动 C. A和B都可以 D. 以上说法都不正确。 8. 下面关于Notification的说法正确的是(D ): A. NotificationManager man = new NotificationManager(); B. PendingIntent contentIntent= new PendingIntent(); C. RemoteViews contentView = new RemoteViews(); D. Notification notification = new Notification(); 9. 关于ContenValues类说法正确的是( A ) A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名是String类型,而值都是基本类型 B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名是任意类型,而值都是基本类型 C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名,可以为空,而值都是String类型 D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值也是String类型

Android利用Gson解析实现天气预报

用Android Studio新建一个默认工程后,将第一张图片红色标记文件修改到相应代码即可

package com.example.rui.weatherforecast; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.EditText; import android.widget.Toast; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import https://www.wendangku.net/doc/9d6775657.html,.HttpURLConnection; import https://www.wendangku.net/doc/9d6775657.html,.MalformedURLException; import https://www.wendangku.net/doc/9d6775657.html,.ProtocolException; import https://www.wendangku.net/doc/9d6775657.html,.URL; public class MainActivity extends AppCompatActivity { EditText et_city, et_weather, et_highTemp, et_lowTemp; Weatherinfo weatherinfo; Weatherinfo.Weather weather;

Android中使用Gson解析JSON数据

Android中使用Gson解析JSON数据 本文由包小卷发表于3年前| Android | 暂无评论| 被围观25,355 views+ 在Android中可以使用Gson解析JSON数据 首先,从 https://www.wendangku.net/doc/9d6775657.html,/p/google-gson/downloads/list下载GsonAPI: google-gson-1.7.1-release.zip 把gson-1.7.jar copy到libs(项目根目录新建一个libs文件夹)中。 可以使用以下两种方法解析JSON数据: 通过获取JsonReader对象解析JSON数据: String jsonData = "[{\"username\":\"arthinking\",\"userId\":001},{\"usernam e\":\"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(); } 通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行操作:创建JSON数据对应的一个POJO 对象User.java: public class User { private String username ; private int userId ; public String getUsername() { return username; } public void setUsername(String username) { https://www.wendangku.net/doc/9d6775657.html,ername = username; } public int getUserId() { return userId; } public void setUserId(int userId) { https://www.wendangku.net/doc/9d6775657.html,erId = userId; } } 使用Gson对象获取User对象数据进行相应的操作: Type listType = new TypeToken>(){}.getType(); Gson gson = new Gson(); LinkedList 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()); }

json数据的存储和读写

android中JSON数据的读写方法 博客分类: android [/color]用习惯了XML,总觉得JSON可读性又差,也不好保存等等,到真正接触了,才发现在android上,JSON就像亲儿子一样容易管教。 还是先看数据源,数据源我采用的是一系列的村民集合,村民的属性如下。 Java代码 1public class Folk { 2String name; 3String career; 4String age; 5int salary; 6boolean sex; 引用 先看写数据,数据是我假定一个村的数据,由一个arraylist填装。通过一个for循环很容易取出了arraylist中的每个对象以及其数据,每个对象,即村民都可以生成一个JSONobject,这里json和java面向对象的思想是多么吻合。prey load! 其次还有一个JSONarray对象,就是一个JSON自己的Arraylist。好比我们把自己的对象转存到一个Json对象中,从我们的Arraylist中取出来,再装进一个Json的Arraylist。 好比我把一个个村名从一辆大卡车上接下来(从自己的ArrayList取),把他们穿戴整齐了

(装进Json对象中),再挥挥手把他们送上火星游的太空飞船(jsonArray),临走我在飞船上挂上了village的标签,火星上的同事会知道我的村民坐的是哪艘船。所有工序完成。 看代码 Java代码 7public class MyJsonWriter { 8ArrayList folks; 9File saveFile; 10public MyJsonWriter(ArrayList folks){ 11this.folks=folks; 12} 13 14public void setFilePath(String filepath){ 15saveFile=new File(filepath); 16try { 17saveFile.createNewFile(); 18} catch (IOException e) { 19// TODO Auto-generated catch block 20 e.printStackTrace(); 21} 22} 23

相关文档
相关文档 最新文档