下载 > 资源分类 >  移动开发 >  Android > fastjson-1.2.7.jar通用json文本解析实例(轻开IOS和安卓App服务器开发)

fastjson-1.2.7.jar通用json文本解析实例(轻开IOS和安卓App服务器开发)

2015-12-29 上传大小:11.11MB

1.1	快速搭建IOS及安卓App服务器
1.2	基础知识
2	通用解析程序源码
源文件webeasy/WEB-INF/classes/JSONEasy.java
package htok.apps;
import htok.Path;
import htok.tools.*;
import htok.we.html.*;
import htok.we.*;
import javax.servle
t.http.*;
import java.util.*;
import com.alibaba.fastjson.*;

public class JSONEasy extends JspEasy
{
/*/构造对象
	public JSONEasy()
	{
		super();
	}*/
	public JSONEasy(HttpServletRequest request,HttpServletResponse response)
	{
		super(request,response);
	}
//解析JSON文本
	public void parseJson(String json)
	{parseJson(json,"j");}
	public void parseJson(String json,String prefix)
	{
		int pos = json.indexOf("[");
		if(pos==-1)
		{
			try {
				JSONObject jsonObj = JSON.parseObject(json);
				json2Bag(jsonObj,prefix,0);
			} catch (Exception e) {
				getBag("pPage").set("jsonerror", "Invalid JSON format");log(e.getMessage());
			}
		}
		else if(pos==0)
		{
			try {
				JSONArray jsonArr = JSON.parseArray(json);
				jsonArray2Bag(jsonArr,prefix,0);
			} catch (Exception e) {
				getBag("pPage").set("jsonerror", "Invalid JSON format");
			}
		}
		else{
			String str = json.substring(0,pos);
			str = str.trim();
			if(str.equals(""))
			{
				try {
					JSONArray jsonArr = JSON.parseArray(json);
					jsonArray2Bag(jsonArr,prefix,0);
				} catch (Exception e) {
					getBag("pPage").set("jsonerror", "Invalid JSON format");
				}
			}
			else{
				try {
					JSONObject jsonObj = JSON.parseObject(json);
					json2Bag(jsonObj,prefix,0);
				} catch (Exception e) {
					getBag("pPage").set("jsonerror", "Invalid JSON format");
				}
			}
		}
	}
	public void json2Bag(JSONObject jsonObj,String prefix,int level)
	{
		try {
			String key;
			String value;
			Bag b0 = new Bag(Bag.BAG);
			String prefix1;
			if(prefix.indexOf("0")>0)
				prefix1 = new StringBuffer(prefix).append(".").append(String.valueOf(level)).toString();
			else
				prefix1 = new StringBuffer(prefix).append(String.valueOf(level)).toString();
			setBag(prefix1,b0);//log(prefix1);
			int i=0;
			for (Map.Entry<String, Object> entry : jsonObj.entrySet())
			{
				key = entry.getKey();
				if(!tools.canName(key)) key = new StringBuffer("_").append(key).toString();
				Object ob = entry.getValue();
				if(ob instanceof JSONArray)//如果下级是json数组就调jsonArray2Bag
				{
					jsonArray2Bag((JSONArray)ob,prefix1,i);
					b0.set(key,new StringBuffer(prefix1).append(".").append(String.valueOf(i)).toString());
				}
				else if(ob instanceof JSONObject)//如果下级是json对象就递归
				{
					json2Bag((JSONObject)ob,prefix1,i);
					b0.set(key,new StringBuffer(prefix1).append(".").append(String.valueOf(i)).toString());
				}
				else{//如果下级是如果是文本或值,就放进书包
					value = String.valueOf(ob);
					if (!value.equals(""))
						b0.set(key, value);
				}
				i++;
			}
		} catch (Exception e) {
			getBag("pPage").set("jsonerror", "Invalid JSON format");
		}
	}
	public void jsonArray2Bag(JSONArray jsonArray,String prefix,int level)
	{
		try {
			Bag b0 = new Bag(Bag.BAG);
			String prefix1;
			if(prefix.indexOf("0")>0)
				prefix1 = new StringBuffer(prefix).append(".").append(String.valueOf(level)).toString();
			else
				prefix1 = new StringBuffer(prefix).append(String.valueOf(level)).toString();
			setBag(prefix1,b0);//log(prefix1);
			int i=0;
			for(Object ob :jsonArray)
			{
				b0.setSuffix(i);
				if(ob instanceof JSONArray)//如果下级是json数组就递归
				{
					jsonArray2Bag((JSONArray)ob,prefix1,i);
					b0.set("v",new StringBuffer(prefix1).append(".").append(String.valueOf(i)).toString());
				}
				else if(ob instanceof JSONObject)//如果下级是json对象就生成一个以对象名为id的书包
				{
					int j=0;
					for (Map.Entry<String, Object> entry : ((JSONObject)ob).entrySet())
					{
						String key = entry.getKey();
						if(!tools.canName(key)) key = new StringBuffer("_").append(key).toString();
						Object ob1 = entry.getValue();
						if(ob1 instanceof JSONArray)//如果下级是json数组就调jsonArray2Bag
						{
							jsonArray2Bag((JSONArray)ob1,new StringBuffer(prefix1).append(".").append(String.valueOf(i)).toString(),j);
							b0.set(key,new StringBuffer(prefix1).append(".").append(String.valueOf(i)).append(".").append(String.valueOf(j)).toString());
						}
						else if(ob1 instanceof JSONObject)//如果下级是json对象就递归
						{
							json2Bag((JSONObject)ob1,new StringBuffer(prefix1).append(".").append(String.valueOf(i)).toString(),j);
							b0.set(key,new StringBuffer(prefix1).append(".").append(String.valueOf(i)).append(".").append(String.valueOf(j)).toString());
						}
						else{//如果下级是如果是文本或值,就放进书包
							String value = String.valueOf(ob1);
							if (!value.equals(""))
								b0.set(key, value);
						}
						j++;
					}
					b0.set("v",new StringBuffer(prefix1).append(".").append(String.valueOf(i)).toString());
				}
				else{//如果下级是如果是文本或值,就放进书包
					String value = String.valueOf(ob);
					if (!value.equals(""))
						b0.set("v", value);
				}
				i++;
			}
		} catch (Exception e) {
			getBag("pPage").set("jsonerror", "Invalid JSON format");
		}
	}
	public void log(String str)
	{
		Path.log("JSONEasy_",str);
	}
}
3	用法
构造:JSONEasy je = new JSONEasy(request,response);
解析:je.parseJson(“{\“name\”,\”value\”}”);
3.1	结果处理
引入结果处理文件:je.show("@{sys:curPath}json2bag.html");
根书包名默认为:j0
根书包中直接按key取值,如:@{j0:name},得到value
下一级节点则从上一级节点书包中先取回书包名:
<bag id=pPage><!-- 取出书包名,根书包名默认为j0 -->
	<we name=array>@{j0:array}</we>
</bag>
再下级节点以此类推
然后按当前节点中的key直接取值即可:@{@{pPage:array}:c1}

4	实例
解析并在网页中显示下面的json文本
文本内容
{"test":"测试的文本","array":[{"c1":"值1","c2":"值2"},{"c1":"值1","c2":"值2"},{"c1":"值1","c2":"值2"}]}
文本文件:webeasy/_samples/jspeasy/json/json2bag.json
4.1	读文本文件:
<chtml>
<file act=read enc=GBK method=str name=json>@{sys:curPath}json2bag.json</file>
</chtml>
例子文件:webeasy/_samples/jspeasy/json/json2bag.htm
4.2	解析文本
<%@ page session="true" import="htok.apps.*,htok.we.html.*,htok.tools.*,htok.we.*,java.net.*"%>
<%
JSONEasy je = new JSONEasy(request,response);
je.work("@{sys:curPath}json2bag.htm");//引入读文本的文件
je.parseJson(je.equ("@{file:json}"));//解析json文本,把结果放到书包中
je.show("@{sys:curPath}json2bag.html");//输出书包中的内容
%>
例子文件:webeasy/_samples/jspeasy/json/json2bag.jsp
4.3	输出书包中的内容
<!DOCTYPE html>
<html>
<h1>测试:@{j0:test}</h1>
<chtml>
<bag id=pPage><!-- 取出书包名,根书包名默认为j0 -->
	<we name=array>@{j0:array}</we>
</bag>
<for bags="@{pPage:array}" end="@{@{pPage:array}:getLength}">
	<p>
		<b>第@{int:@{@{pPage:array}:getSuffix}+1}行</b><br>
		<span>列1:@{@{pPage:array}:c1},列2:@{@{pPage:array}:c2}</span>
	</p>
</for>
</chtml>
</html>
例子文件:webeasy/_samples/jspeasy/json/json2bag.html
4.4	效果
...展开收缩
综合评分:2.5(2位用户评分)
开通VIP C币充值 立即下载

评论共有2条

server01_xz2015-12-30 16:23:30
先看看,不知道速度比1.0.0提高了多少!
findao122015-12-30 12:26:54
不错,大大简化了开发工作量!

登录后才能评论

 

相关推荐

H5调手机摄像头和本地相册,兼容ios和安卓手机并压缩图片,展示图片,并上传后台 立即下载
积分/C币:13
百度推送java服务器和安卓客户端代码 立即下载
积分/C币:5
安卓的webView和安卓的全屏幕遮罩(屏蔽向下事件)实例。C++项目 立即下载
积分/C币:2
App推广安卓ios渠道资料大全(14M) 立即下载
积分/C币:3
安卓socket链接服务器接收数据APP 立即下载
积分/C币:3
安卓修改工具和安卓签名工具,非常好用。 立即下载
积分/C币:3
json-gson-fastJson的jar包 立即下载
积分/C币:3
json-gson-fastjson-jar包 立即下载
积分/C币:3
iOS 安卓 通用AES加密 立即下载
积分/C币:3
最简单安卓访问JSON例子,包含手机端和服务器端(测试通过) 立即下载
积分/C币:3
ios下json数据解析的实例 立即下载
积分/C币:3
openfire服务器的搜索插件和fastjson的Jar包 立即下载
积分/C币:3
fastjson jar 使用详解 实例 立即下载
积分/C币:5
fastjson阿里巴巴公司推出的 强大json解析工具 立即下载
积分/C币:5
android中的JSON数据解析库gson和fastjson 立即下载
积分/C币:3
Android中Json数据解析三种方式:原生、Gson、FastJson 立即下载
积分/C币:3
Json_Gson_FastJson解析 立即下载
积分/C币:5
fastjson 快速解析json 立即下载
积分/C币:3
FastJson解析Json数据 立即下载
积分/C币:3
fastjson Json解析 立即下载
积分/C币:3

热门专辑

VIP会员动态

关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
确认下载
img

fastjson-1.2.7.jar通用json文本解析实例(轻开IOS和安卓App服务器开发)

会员到期时间: 剩余下载个数: 剩余C币:593 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
C币充值 开通VIP
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可奖励5下载分

  • 举报人:
  • 被举报人:
  • 举报的资源分:
  • *类型:
  • *详细原因: