推荐几个经典 iOS 开源类库及工具

几个常用的开源类库及下载地址:

1.json json编码解码
2.GTMBase64 base64编码解码
3.TouchXML xml解析
4.SFHFKeychainUtils 安全保存用户密码到keychain中
5.MBProgressHUD 很棒的一个加载等待特效框架
6.ASIHTTPRequest http等相关协议封装
7.EGORefreshTableHeaderView 下拉刷新代码
8.AsyncImageView 异步加载图片并缓存代码
9.类似setting的竖立也分栏程序

AppStore软件排名相关,工欲善其事,必先利其器。

1.下载排名相关:appannie
2.用户行为分析:flurry
3.majicrank-各国排名查询工具
4.AppViz-App销售统计软件
5.PodViz-用户评论等查看工具
6.appfigures-报表统计分析工具
7.一个帮助开发者推广app的评测站:苹果I派党

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 效果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值