用安卓自带的原生方法解析从webservice获取的json数据


研究了oschina,获取的信息都是用xml的,感觉没json那么好,解析太复杂循环啥的,还有xml相对于json来说太多了,麻烦。

之前试过用geon还有fastjson但是老是报错。还是用原生自带的json方法。这里我来接受一组json数据

譬如我们想要获取一堆人员信息,

[
  {"username":"马晕","company":"albaba"},
  {"username":"刘强西","company":"jingdong"},
  {"username":"马花疼","company":"qq"},
  {"username":"李艳红","company":"baidu"}
]

上面这些是一组人员的信息 有两个字段 名字和所在公司

这里我们根据我们获得的数据进行映射:生成一个人员类实体

public class User implements Serializable {

	private String username;
	private String company;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getCompany() {
		return company;
	}
	public void setCompany(String company) {
		this.company = company;
	}

}

到这里 我们怎么把上面的json组数据转换成 一个人员组呢,我们这里可以用到List<User> 来把获得的json数据

那我们在做一个UserList的实体类 用来转换json数据为了对象组

public class UserList implements Serializable {

	private List<User> userList= new ArrayList<User>();
	//信息组的人员的总人数
	private int usersCount;

	public int getUsersCount() {
		return  usersCount;
	}	

	public List<User> getUserList() {
		return userList;
	}

    //解析json并转化成对象组
	public static UserList parse(JSONArray obj) throws JSONException {

		UserList list = new UserList();
		if(null != obj){
			//获取对象组长度作为总人数
			list.usersCount = obj.length();
			for(int i=0;i<obj.length();i++){
				JSONObject userJson = obj.getJSONObject(i);
				User user = new User();
				user.setUsername(userJson.getString("username"));
				user.setCompany(userJson.getString("company"));
				list.userList.add(user);
			}
		}
		return list;
	}

}

上面的解析参数是一个json对象组,到这里就可以很简单了,

String usersString = "[
  {"username":"马晕","company":"albaba"},
  {"username":"刘强西","company":"jingdong"},
  {"username":"马花疼","company":"qq"},
  {"username":"李艳红","company":"baidu"}
]";

假如我们获得的json数据是一个字符串,一般都是字符串,然后我们用java自带的方法进行转换成JSONArray

	/**
	 * 字符串转JSON
	 *
	 * @param json
	 * @return
	 * @throws JSONException
	 */
	public static JSONArray toJSONArray(String json) throws JSONException {
		return new JSONArray(json);
	}

我们还为此写了一个把string转换成JSONArray的方法。

写到这里 就不写了 是不是很简单 希望给大家一个 抛砖引玉.

时间: 2024-12-21 08:34:30

用安卓自带的原生方法解析从webservice获取的json数据的相关文章

Android解析中国天气网的Json数据

在Android开发中.一般的APP都是通过获取server端的数据来更新UI.从server获取到的数据能够是Json.它的数据量要比XML要小,这里解析中国天气网上获取的数据,尽管已经不再更新了.但用来学习还是能够的.为了方便我直接到数据通过txt保存到本地,它的数据能够通过这个页面获取:http://m.weather.com.cn/data/101280601.html 文件夹结构 事实上解析也非常easy.关键代码 private void json3() { InputStream

用 SuperObject 解析淘宝上的 Json 数据 - 回复 &quot;macrolen&quot; 的问题

macrolen 给了这样一些数据, 说是用淘宝的 API 获取的 JSON 数据, 让我帮助解析: {"items_search_response":{"item_search":{"item_categories":{"item_category":[{"category_id":150708,"count":66},{"category_id":50002480

gson解析通过okhttp获取的json格式数据(转载)

本文采用okhttp库获取聚合网提供的免费接口数据,完成一个手机号码归属地查询功能. 其请求接口格式如下: 数据返回结果: 首先添加gson和okhttp的引用,gson我是直接下载jar包的: compile 'com.squareup.okhttp3:okhttp:3.2.0' compile files('C:/Users/Administrator/AndroidStudioProjects/ExOkhttp/libs/gson-2.3.1.jar') 采用get方法,获取数据主要代码如

android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据

补充:关于PHP服务端可能出现的问题: 如果你刚好也像我一样,用php实现的服务端程序,采用的是apache服务器,那么虚拟主机的配置可能会影响到android应用的调试!! 在android应用中访问的IP都是10.0.2.2,如果在apache虚拟主机配置文件中配置了多个虚拟主机,那么将默认解析为对第一个虚拟主机的请求,所以,在调试android应用时,应该将对应的服务端所配置的那个虚拟主机放在配置文件中的第一个虚拟主机的位置.否则就会出现请求的文件不存在等的错误. 服务端返回JSON数据及

jquery 获取并解析哈工大ltp-cloud返回的json数据

ltp-cloud是一款功能强大的基于云服务平台的中文处理工具,该服务调用简单,返回结果格式多样,这里以jquery+json为例来说明.官方在github也提供了一份简单的使用示例,但是它只是获取了json格式的字符串,并没有对json数据进行解析.本文弥补了这一不足.具体代码如下: 注:本例以获取词性标注为例,您可以根据自己的需要调整调用ltp的url,相应地success方法中的解析代码也要做调整 <html> <head> <meta charset="UT

Ajax获取显示Json数据的方法

<span style="color:#3333FF;"> </span><span style="color:#3333FF;">public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; //--构建json格式数据 //string jsonArr = "{'Id':

springMVC解析带有中文字符的json数据异常

最近开发遇到一个bug,异常日志为:nested exception is org.codehaus.jackson.JsonParseException: Invalid UTF-8 start byte 0xbc,从日志上可以看出,springMVC在解析json数据时,发现json数据不是utf-8的格式,这样的结果让我百思不得其解,于是经历下如下的一系列尝试,花了半天时间,才解决这个bug. 背景: 已经在web.xml中配置了如下信息: <!-- 保证请求为utf-8编码 --> &

漂亮的表格样式;jQuery清楚表格所有行;js解析后台传过来的JSON数据;动态生成表格数据

一 : 先看看漂亮的表格 css代码: .mylist { width: auto; height:auto; border:1px solid #accdf4; margin-top:10px; font-family:"宋体"; font-size:12px; color:#155c9f; text-align:center; border-collapse: collapse; } .mylist th { background-color:#d0e4ff; text-align

SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题

原因分析 首先我们来看下Spring mvc 中文件上传的配置 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8" /> <property nam