Android将服务器传来的json解析为数组变量,通过java文件simpleadapter输出到页面。
我做了一个代码如下:
public class MainActivity extends Activity {
ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutactivity_main);
listview = (ListView) findViewById(Ridlistview);
String temp = "[{\"aa\":\"1\",\"bb\":\"2\"},{\"aa\":\"3\",\"bb\":\"4\"},{\"aa\":\"5\",\"bb\":\"6\"}]";
List<Map<String, Object>> data = getList(temp);
SimpleAdapter adapter = new SimpleAdapter(this, data, Rlayoutitem, new String[]{"aa","bb"}, new int[]{Ridaa,Ridbb});
listviewsetAdapter(adapter);
}
public Map<String, Object> getMap(String jsonString) {
JSONObject jsonObject;
try {
jsonObject = new JSONObject(jsonString);
@SuppressWarnings("unchecked")
Iterator<String> keyIter = jsonObjectkeys();
String key;
Object value;
Map<String, Object> valueMap = new HashMap<String, Object>();
while (keyIterhasNext()) {
key = (String) keyIternext();
value = jsonObjectget(key);
valueMapput(key, value);
}
return valueMap;
} catch (JSONException e) {
eprintStackTrace();
}
return null;
}
public List<Map<String, Object>> getList(String jsonString) {
List<Map<String, Object>> list = null;
try {
JSONArray jsonArray = new JSONArray(jsonString);
JSONObject jsonObject;
list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < jsonArraylength(); i++) {
jsonObject = jsonArraygetJSONObject(i);
listadd(getMap(jsonObjecttoString()));
}
} catch (Exception e) {
eprintStackTrace();
}
return list;
}
}
item的布局文件
<xml version="10" encoding="utf-8"><LinearLayout xmlns:android="http://schemasandroidcom/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/aa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp" />
<TextView
android:id="@+id/bb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:textColor="#f00"
android:textSize="30sp" />
</LinearLayout>
最后的界面效果:
使用JSON 转换工具详细解析:
这个处理过程包括将 IRI 转换为一个等价的 URL。在核心 Atom 词汇表中,icon、logo、uri、link 和 content 元素可以包含能被解除引用的 IRI,下面就对JSON 转换工具进行学习探讨。
初看起来,将 Atom 文档转换为 JSON 似乎非常简单。毕竟,Atom 只是一些 XML,并且有大量 XML 和 JSON 转换工具可用。然而,Atom 格式不仅仅是 XML 元素和属性的集合。
许多复杂的细节使得很难正确处理 Atom。本文将描述这些问题,并演示了一种由 Apache Abdera 项目实现的机制,该机制可以将 Atom 文档转换成 JSON 并生成易于理解、易于使用的完整内容。
在将一个 Atom 文档转换为JSON 转换工具 时,将获得大量富含信息的内容,并将其序列化为一种非常简单的形式。在难于解析和正确处理 XML 的环境中,您可以更加轻松地使用这种更简单的内容形式。
概述JSON定义法的相关使用技巧和说明
详细阐述JSON结构的格式说明特点
使用JSON数值结构说明介绍使用
大致讲述JSON异步的使用说明介绍
读者详细说明JSON 的使用与维护工作
这个过程面临的主要挑战是,确保重要数据和上下文不会在转换过程中丢失。以下章节将讨论转换 Atom 文档时的各个关键问题。假设读者至少对 Atom 和 JSON 有一个基本的了解。如果对它们都不熟悉,请在继续阅读之前查看一下本文末尾列出的 参考资料。
Atom 文档包含一个人类和计算机都能识别的混合信息集合。人类可读内容的恰当呈现,如条目标题、分类标签、链接标题、权限描述等等,依赖于一种在转换为 JSON 过程中必须正确保存的语言上下文。
xml:lang 是一种指定 Atom 文档所使用语言的机制。此属性可以出现在 Atom 文档中的任何位置,而且既可以被子元素继承,也可以被覆盖。xml:lang 属性的值是一个由 RFC 4646 定义的 “语言标记” ,名为 “Tags for Identifying Languag”。
这些标记提供关于文本编写所用语言、使用的脚本或编写系统的信息,以及地区性语言变化等。这类信息将影响用户代理呈现文本的方式。清单 1 所示的示例 Atom 提要演示了 xml:lang 在 Atom 文档中的用法,但是该示例没有实际意义。本系列已经用大量时间讨论了数据格式,这主要是因为几乎所有异步应用程序最终都要处理数据。如果掌握了发送和接收所有类型的数据的各种工具和技术。
并按照最适合每种数据类型的方式使用它们,那么就能够更精通 Ajax。在掌握 XML 和纯文本的基础上,再掌握JSON 转换工具,这样就能够在 JavaScript 中处理更复杂的数据结构。
本系列中的下一篇文章将讨论发送数据以外的问题,深入介绍服务器端程序如何接收和处理 JSON 转换工具的数据。还要讨论服务器端程序如何跨脚本和服务器端组件以 JSON 格式发送回数据,这样就可以将 XML、纯文本和 JSON 请求和响应混合在一起。这可以提供很大的灵活性,可以按照几乎任何组合结合使用所有这些工具。
json文件是一种轻量级的数据交互格式。一般在jquery中使用getJSON()方法读取。
$getJSON(url,[data],[callback])
url:加载的页面地址
data: 可选项,发送到服务器的数据,格式是key/value
callback:可选项,加载成功后执行的回调函数
1首先建一个JSON格式的文件userinfojson 保存用户信息。如下:
1234567891011121314151617
[{"name":"张国立","sex":"男","email":"zhangguoli@123com"},{"name":"张铁林","sex":"男","email":"zhangtieli@123com"},{"name":"邓婕","sex":"女","email":"zhenjie@123com"}]
2其次建一个页面用于获取JSON文件里的用户信息数据,并显示
123456789101112131415161718192021222324252627282930313233343536373839404142
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Transitional//EN" "http://wwww3org/TR/xhtml1/DTD/xhtml1-transitionaldtd"><html xmlns="http://wwww3org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>getJSON获取数据</title><script type="text/javascript" src="js/jquery-182minjs"></script><style type="text/css">#divframe{ border:1px solid #999; width:500px; margin:0 auto;}loadTitle{ background:#CCC; height:30px;}</style>< script type = "text/javascript" >$(function (){ $("#btn")click(function () { $getJSON("js/userinfojson", function (data){ var $jsontip = $("#jsonTip"); var strHtml = "123"; //存储数据的变量 $jsontipempty(); //清空内容 $each(data, function (infoIndex, info){ strHtml += "姓名:" + info["name"] + "<br>"; strHtml += "性别:" + info["sex"] + "<br>"; strHtml += "邮箱:" + info["email"] + "<br>"; strHtml += "<hr>" }) $jsontiphtml(strHtml); //显示处理后的数据 }) })})</script></head><body><div id="divframe"><div class="loadTitle"><input type="button" value="获取数据" id="btn"/></div><div id="jsonTip"></div></div></body></html>
android sdk中有自带的JSONObject,JSONArray类要借助这个类才能做解析。
首先,如果你拿到String的话,可以先构造一个JSONObject对象 JSONObject oj = new JSONObject("testString");
然后用自带的方法解析就ok了。
举例:_creationTime = objectoptLong("ct") 1000;
_title = objectoptString("title");
0条评论