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

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

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.servlet.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 效果 ...展开详情收缩
2015-12-29 上传大小:11.11MB
分享
收藏 (3) 举报

评论 共3条

benpaodesikuaiwu 挺不错了 学习中
2018-07-19
回复
server01_xz 先看看,不知道速度比1.0.0提高了多少!
2015-12-30
回复
findao12 不错,大大简化了开发工作量!
2015-12-30
回复
Android 和IOS使用统一二维码下载APP

Android 和IOS使用相同的二维码,在页面调整时判断手机型号,跳转到相应的应用市场

立即下载
App自动化实例(IOS+Android)

App自动化实例: appium-1.6-XCUITest-demo android-uiautomator-server

立即下载
fastjson-1.2.7.jar

fastjson-1.2.7.jar 阿里baba开发的json,很方便的json转换

立即下载
httpclient.jar/httpcore.jar/httpmime.jar/jtds.jar/zxing.jar

fastjson-1.2.7.jar/gson-2.6.2.jar/httpclient-4.1.2.jar/httpcore-4.0.jar/httpmime-4.1.3.jar/jtds-1.2.7.jar/zxing.jar 安卓包

立即下载
H5页面唤醒App(安卓+ios)

H5页面唤醒App(安卓+ios),由安卓APP提供scheme,host等,openUrl,universalUrl

立即下载
iOS 安卓 通用AES加密

iOS 安卓 通用AES加密

立即下载
CC2541资料

cc2541相关资料,包括安卓、ios,app

立即下载
捕鱼游戏八爪鱼美术资源

捕鱼游戏八爪鱼美术资源,安卓IOS通用的序列帧图。捕鱼游戏八爪鱼美术资源,安卓IOS通用的序列帧图。

立即下载
安卓手机客户端App查询数据库源程序

安卓手机客户端App源程序,演示如何用在手机App查询数据库 跨平台开发,你也可以发布在IOS,安卓和Win平台上. XE7以上版本通用.

立即下载
fastjson1.2.7.jar

fastjson1.2.7 依赖JDk1.8

立即下载
快速开发android应用1-服务器搭建

这是本人 快速开发android应用1-服务器搭建 博客中服务端搭建所需要的文档和资源,主要包括微服私访APP接口规范_V1.0, 微服私访APP数据结构字典,微服私访服务端部署说明以及shopvisit.sql文件、visitshop.rar文件

立即下载
Appium+RF实现手机应用的自动化测试-iOS篇

本文主要介绍了如何使用Appium和Robotframework实现对iOS应用的自动化测试,从概念介绍,如何安装和部署到示例脚本一应具有,相信读者通过 本文可基本掌握其用法。

立即下载
闪光灯屏幕背光SOS三种模式的手电筒

闪光灯屏幕背光SOS三种模式的手电筒

立即下载
一个Android健身APP源码(类似KEEP、FEEL、轻+、减约、薄荷等)

一个Android健身APP源码(类似KEEP、FEEL、轻+、减约、薄荷等) 详细查看:http://blog.csdn.net/djzhao627/article/details/78988968

立即下载
html5唤起原生ios安卓android app的方法

html5唤起原生ios和安卓android app的方法

立即下载
手机站打开app

手机站打开app,完美兼容安卓和IOS。iframe的方式打开APP。

立即下载
安卓app对接微信支付代码

安卓app对接微信支付代码,源代码 ios app对接微信支付代码

立即下载
iOS jason鬼脸解析工具

生成json 文件 ,查看json文件,一目了然,安卓,iOS,只要涉及到json的都可以用 ,本软件适用于mac电脑

立即下载
中华养生iosApp

iOS APP,中华养生App,自己写的代码,想用ios开发的开下载吧!

立即下载
用Delphi 开发iOS苹果和Android安卓移动应用(中文版).

移动开发指南:用Delphi XE8开发iOS苹果和Android安卓移动应用(中文版).pdf

立即下载
关闭
img

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

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
点击完成任务获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
img

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

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

积分不足!

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

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

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

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

兑换成功

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

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

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

举报

若举报审核通过,可返还被扣除的积分

  • 举报人:
  • 被举报人:
  • *类型:
    • *投诉人姓名:
    • *投诉人联系方式:
    • *版权证明:
  • *详细原因: