圣安地列斯npc文件名手机版cfg.json文件

8058人阅读
Java中的JSON序列化和反序列化例子:
Java代码 &
&&&&&&&&&&&&public&static&Object&getObjFromJsonArrStr(String&source,Class&beanClass)&&{&&&&&&JSONObject&jsonObject&=&(JSONObject)&JSONSerializer.toJSON(source);&&&&&&return&&JSONObject.toBean(jsonObject,beanClass);&&&&&&&&&&}&&&&&&&&&&public&static&Object&getObjFromJsonArrStr(String&jsonArrStr,&Class&clazz,&Map&classMap)&&&{&&&&&&&&JSONObject&jsonObj&=&JSONObject.fromObject(jsonArrStr);&&&&&&&&&&&&&&&&&&&return&JSONObject.toBean(jsonObj,&clazz,&classMap);&&&&&&&&&&&&&&}&&&&&&&&&&&&&@SuppressWarnings(&unchecked&)&&public&static&List&getListFromJsonArrStr(String&jsonArrStr,&Class&clazz)&{&&&&&&&&&&&JSONArray&jsonArr&=&JSONArray.fromObject(jsonArrStr);&&&&&&&&&&&List&list&=&new&ArrayList();&&&&&&&&&&&for&(int&i&=&0;&i&&&jsonArr.size();&i++)&&&&&&&&&&{&&&&&&&&&&&&&&&list.add(JSONObject.toBean(jsonArr.getJSONObject(i),&clazz));&&&&&&&&&&&}&&&&&&&&&&&return&&&&&&&&}&&&&&&&&&&&&&&&&&&&@SuppressWarnings(&unchecked&)&&public&static&List&getListFromJsonArrStr(String&jsonArrStr,&Class&clazz,&Map&classMap)&&&{&&&&&&&&&&JSONArray&jsonArr&=&JSONArray.fromObject(jsonArrStr);&&&&&&&&&&List&list&=&new&ArrayList();&&&&&&&&&&for&(int&i&=&0;&i&&&jsonArr.size();&i++)&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&list.add(JSONObject.toBean(jsonArr.getJSONObject(i),&clazz,&classMap));&&&&&&&&&&}&&&&&&&&&&return&&&&&}&&&&&&&&&&&&&&@SuppressWarnings(&unchecked&)&&public&static&String&getJsonArrStrFromList(Object&obj)&&&{&&&&&&&&&&&&&String&jsonStr&=&null;&&&&&&&&&&&&&&&&&if&(obj&==&null)&{&&&&&&&&&&&&&&&return&&{}&;&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&JsonConfig&jsonCfg&=&new&JsonConfig();&&&&&&&&&&&&&&&&&&&&&&&jsonCfg.registerJsonValueProcessor(java.util.Date.class,&&&&&&&&&&&&&&&&&&&new&JsonDateValueProcessor(SystemConstants.DateFormat));&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(obj&instanceof&Collection&||&obj&instanceof&Object[])&{&&&&&&&&&&&&&&&jsonStr&=&JSONArray.fromObject(obj,&jsonCfg).toString();&&&&&&&&&&&}&else&{&&&&&&&&&&&&&&&jsonStr&=&JSONObject.fromObject(obj,&jsonCfg).toString();&&&&&&&&&&&}&&&&&&&&&&&&&&&return&jsonS&&&&&&} &&
cn.fiyo.base.
java.io.IOE
java.io.PrintW
java.text.SimpleDateF
java.util.*;
javax.servlet.http.HttpServletR
javax.servlet.http.HttpServletR
mons.beanutils.BeanU
mons.logging.L
mons.logging.LogF
org.springframework.beans.propertyeditors.CustomDateE
org.springframework.beans.propertyeditors.StringTrimmerE
org.springframework.web.bind.ServletRequestDataB
cn.easecom.platform.module.basic.web.user.UserC
net.sf.json.JSONA
net.sf.json.JSONO
class JsonUtils {
&&&&private
static final
Log log = LogFactory.getLog(JsonUtils.class);
&&&&public
JsonUtils() {
&&&&&* 向客户端输出JSON
&&&&public
static void
outputJson(HttpServletResponse response, JSONObject json)
&&&&&&&&&&&&throws
Exception {
&&&&&&&&response.setCharacterEncoding(&UTF-8&);
&&&&&&&&PrintWriter out = response.getWriter();
&&&&&&&&out.write(json.toString());
&&&&&&&&out.flush();
&&&&&* 从一个JSON 对象字符格式中得到一个java对象
&&&&public
static Object toBean(String jsonString, Class beanClass) {
&&&&&&&&JSONObject jsonObject = JSONObject.fromObject(jsonString);
&&&&&&&&Object object = JSONObject.toBean(jsonObject, beanClass);
&&&&&&&&return
&&&&public
static Object toBean(String jsonString, Class beanClass,Map map) {
&&&&&&&&JSONObject jsonObject = JSONObject.fromObject(jsonString);
&&&&&&&&Object object = JSONObject.toBean(jsonObject, beanClass,map);
&&&&&&&&return
&&&&&* 从json对象集合表达式中得到一个java对象列表
&&&&&* @param jsonString:数组字符串[{key1:value1,key2:value2},{bean2},{bean3},...]
&&&&&* @param pojoClass
&&&&&* @return
&&&&public
static List toList(String jsonString, Class beanClass) {
&&&&&&&&JSONArray jsonArray = JSONArray.fromObject(jsonString);
&&&&&&&&List list =
new ArrayList();
&&&&&&&&for
i = 0; i & jsonArray.size(); i++) {
&&&&&&&&&&&&JSONObject jsonObject = jsonArray.getJSONObject(i);
&&&&&&&&&&&&Object object = JSONObject.toBean(jsonObject, beanClass);
&&&&&&&&&&&&list.add(object);
&&&&&&&&return
&&&&public
static List toList(String jsonString, Class beanClass,Map map) {
&&&&&&&&JSONArray jsonArray = JSONArray.fromObject(jsonString);
&&&&&&&&List list =
new ArrayList();
&&&&&&&&for
i = 0; i & jsonArray.size(); i++) {
&&&&&&&&&&&&JSONObject jsonObject = jsonArray.getJSONObject(i);
&&&&&&&&&&&&Object object = JSONObject.toBean(jsonObject, beanClass,map);
&&&&&&&&&&&&list.add(object);
&&&&&&&&return
&&&&&* 从json字符串中获取一个map,该map支持嵌套功能
&&&&&* @param jsonString
&&&&&* @return
&&&&public
static Map toMap(String jsonString) {
&&&&&&&&JSONObject jsonObject = JSONObject.fromObject(jsonString);
&&&&&&&&Iterator it = jsonObject.keys();
&&&&&&&&Map map =
new HashMap();
&&&&&&&&while
(it.hasNext()) {
&&&&&&&&&&&&String key = (String) it.next();
&&&&&&&&&&&&Object value = jsonObject.get(key);
&&&&&&&&&&&&map.put(key, value);
&&&&&&&&return
&&&&&* 从json数组中得到相应java数组
&&&&&* @param jsonString
&&&&&* @return
&&&&public
static Object[] toObjectArray(String jsonString) {
&&&&&&&&JSONArray jsonArray = JSONArray.fromObject(jsonString);
&&&&&&&&return
jsonArray.toArray();
&&&&&* 从json解析出java字符串数组
&&&&&* @param jsonString
&&&&&* @return
&&&&public
static String[] toStringArray(String jsonString) {
&&&&&&&&JSONArray jsonArray = JSONArray.fromObject(jsonString);
&&&&&&&&String[] stringArray =
new String[jsonArray.size()];
&&&&&&&&for
i = 0; i & jsonArray.size(); i++) {
&&&&&&&&&&&&stringArray[i] = jsonArray.getString(i);
&&&&&&&&return
&&&&&* 从json解析出javaLong型对象数组
&&&&&* @param jsonString
&&&&&* @return
&&&&public
static Long[] toLongArray(String jsonString) {
&&&&&&&&JSONArray jsonArray = JSONArray.fromObject(jsonString);
&&&&&&&&Long[] longArray =
new Long[jsonArray.size()];
&&&&&&&&for
i = 0; i & jsonArray.size(); i++) {
&&&&&&&&&&&&longArray[i] = jsonArray.getLong(i);
&&&&&&&&return
&&&&&* 从json解析出java Integer型对象数组
&&&&&* @param jsonString:[1,2,3,4]
&&&&&* @return
&&&&public
static Integer[] toIntegerArray(String jsonString) {
&&&&&&&&JSONArray jsonArray = JSONArray.fromObject(jsonString);
&&&&&&&&Integer[] integerArray =
new Integer[jsonArray.size()];
&&&&&&&&for
i = 0; i & jsonArray.size(); i++) {
&&&&&&&&&&&&integerArray[i] = jsonArray.getInt(i);
&&&&&&&&return
&&&&&* 从json中解析出java Double型对象数组
&&&&&* @param jsonString
&&&&&* @return
&&&&public
static Double[] toDoubleArray(String jsonString) {
&&&&&&&&JSONArray jsonArray = JSONArray.fromObject(jsonString);
&&&&&&&&Double[] doubleArray =
new Double[jsonArray.size()];
&&&&&&&&for
i = 0; i & jsonArray.size(); i++) {
&&&&&&&&&&&&doubleArray[i] = jsonArray.getDouble(i);
&&&&&&&&return
&&&&&* 将java对象转换成json字符串
&&&&&* @param javaObj
&&&&&* @return
&&&&public
static String toJsonString(Object object) {
&&&&&&&&JSONObject json = JSONObject.fromObject(object);
&&&&&&&&return
json.toString();
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&public
void copyProperties(Object dest, Object orig) {
&&&&&&&&try
&&&&&&&&&&&&BeanUtils.copyProperties(dest, orig);
catch (Exception ex) {
&&&&&&&&&&&&log.error(&Copy property error: &
+ ex.toString());
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:83292次
排名:千里之外
原创:13篇
评论:11条
(2)(3)(1)(1)(3)(4)(3)圣安地列斯:夜深了,开辆警车去歪歪|单机|侠盗猎车|圣安地列斯|侠盗飞车_侠盗飞车视频_爱拍原创25295人阅读
Android(29)
前言注意事项
在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt。
如果需要对项目进行全局混码,只需要进行一步操作:
将project.properties的中
“# &proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”的“#”去掉就可以了。
如果有一些代码不能被混淆,比如需要加入了so文件,需要调用里面的方法,那么调用JNI访问so文件的方法就不能被混码。在导出的时候,可能不会报错。但是在手机上运行的时候,需要调用so文件的时候,就会报某某方法无法找到。这个时候就需要用到proguard-project.txt。
在老版本中,创建项目的时候,会给出proguard.cfg,但是在的新版中创建项目则不会有任何提示。这个时候需要只要将proguard.cfg的内容加入到proguard-project.txt中,再根据自己的需要进行编辑即可。
proguard.cfg详细的信息可以参看:
本章内容为开发者指南(Dev Guide)/Developing/Tools/ProGuard,本章内容为&混淆器&,版本为Android3.0 r1,翻译来自:&Jim&,欢迎与他交流:&&,再次感谢&Jim& !。
混淆器(ProGuard)
  在本文中(In this document)
混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。结果是一个比较小的.apk文件,该文件比较难进行逆向工程。因此,当你的应用程序对安全敏感(要求高),例如当你的时候,混淆器是一种重要的保护手段。
混淆器被集成在android&构建系统中,所以你不必手动调用它。同时混淆器仅在发布模式下进行构建应用程序的时候才会运行起来,所以在调试模式下构建程序时,你不必处理混淆代码。让混淆器运行起来是可选择的,但是推荐选上。
这个文档描述了怎样启用并配置混淆器,以及使用跟踪(retrace)工具对混淆的堆栈跟踪信息(stack traces)进行解码。
启用混淆器Enabling ProGuard
当你新建了一个Android工程之后,一个proguard.cfg文件会在工程的根目录下自动创建。这个文件定义了混淆器是怎样优化和混淆你的代码的,所以懂得怎样根据你的需要来定制是非常重要的。缺省的配置文件仅覆盖到了通常情况,所以根据你的需求,很可能需要编辑它。接下来的内容是关于通过定制混淆器配置文件来对。
为了让启用混淆器作为Ant或者Eclipse构建过程中一部分,可以在&project_root&/default.properties文件中,设置proguard.config属性。路径可以是绝对路径或者工程根目录的相对路径。
如果你让proguard.cfg文件在缺省位置(工程的根目录),你可以像这样指定位置:
proguard.config=proguard.cfg
& & &同样,你可以把该文件放到任意的位置,并指定它的绝对路径。
proguard.config=/path/to/proguard.cfg
当你在发布模式下,或者通过运行ant release,或者通过使用Eclipse中的Export Wizard构建你的应用程序的时候,构建系统都会自动地去检查proguard.config属性是否被设置了。如果被设置了,混淆器在把所有东西打包成.apk文件之前,自动地对应用程序字节码进行混淆处理。而在调试模式中构建则不会调用混淆器,因为那样调试会更加繁重。
& & & 运行混淆器之后输出的文件有:
&&&&&&dump.txt
&&&&&&&&&&&&&&&&&&&描述.apk包中所有class文件的内部结构。
& & &&mapping.txt
列出了源代码与混淆后的类,方法和属性名字之间的映射。这个文件对于在构建之后得到的bug报告是有用的,因为它把混淆的堆栈跟踪信息反翻译为源代码中的类,方法和成员名字。更多信息,查看。
& & &&seeds.txt
&&&&&&&&&&&&&&&&&&&列出那些未混淆的类和成员。
& & &&usage.txt
&&&&&&&&&&&&&&&&&&&列出从.apk中剥离的代码。
这些文件放在以下目录中:
&project_root&/bin/proguard&当你使用Ant时&project_root&/proguard&当你使用Eclipse时
注意:&每次在发布模式下构建时,这些文件都会被最新的文件覆盖。所以每次发布程序时候,为了反混淆来自构建时产生的bug报告,请保存这些文件的一个拷贝。对于为什么要保存这些文件的重要性的更多信息,请查看
混淆器配置(proguard config)
某些情况下,proguard.cfg文件的缺省配置可以满足需求了。但是,对于混淆器来说,大多数情况做出正确的分析是困难的,并且它或许会删除在它看来是无用的,但对于程序来说却确实需要的代码。一些例子如下:
&一个仅引用于AndroidManifest.xml文件的类。一个通过JNI调用的方法。动态引用的属性和方法。
缺省的proguard.cfg文件试图覆盖普通的情况,但是你可能碰到类似ClassNotFoundException的异常,这个异常出现在当你的程序去访问一个被混淆器移除了的类的时候。
你可以在proguard.cfg文件中添加-keep这一行来修复这些错误。例如:
-keep&public&class&&MyClass&
-Keep设置有很多可选项和注意地方,所以为了获得更多关于配置信息,强烈推荐你阅读。特别有用的有和。在混淆器手册部分,介绍了代码在混淆过程中你可能碰到的其他常见问题。
解码混淆过的堆栈跟踪信息(Decoding Obfuscated Stack Traces)
当混淆代码并输出了一个堆栈调试信息时,这些方法名字是混淆过的,虽然可以进行调试,但是调试变得困难。幸运的是,每当混淆器运行时候,它都会输出到文件&project_root&/bin/proguard/mapping.txt中,该文件包含了从原始类,方法和属性名字到混淆后名字的映射。
&Windows系统中retrace.bat脚本命令或者Linux和Mac OS X系统中retrace.sh脚本命令能把混淆后的堆栈调试信息转换为可以理解的文件。它被放在&sdk_root&/tools/proguard/目录下。运行retrace工具的命令语法是:
retrace.bat|retrace.sh&[-verbose]&mapping.txt&[&stacktrace_file&]
retrace.bat&-verbose
mapping.txt obfuscated_trace.txt
如果你没有为&stracktrace_file&指定值,那么retrace工具从标准输入读取。
已发布应用程序的调试注意事项(Debugging considerations for published applications)
保存好每一个已发布给用户的程序的mapping.txt文件。通过保存发布构建版本的mapping.txt文件拷贝,确保当用户碰到bug,并把混淆后的堆栈调试跟踪信息提交给你时,你可以进行调试从而修复问题。程序的mapping.txt文件在每次发布构建时都会被覆盖,所以你一定要注意保存正确的版本。
例如,假设你已经发布了一个应用程序并在继续在新的版本中开发添加新的功能。接着你马上启动混淆器并创建一个新的发布版本。该操作把mapping.txt文件覆盖了。一个用户提交了来自当前发布版本的bug报告,该报告包含了堆栈调试信息。你再也不能对用户的堆栈信息进行调试了,因为这个对应用户本机上版本的mapping.txt文件不存在了。其他覆盖mapping.txt文件的情况还有很多,所以对于每一个可能需要调试的版本,你都要确保有一份拷贝。
如何保存mapping.txt文件由你决定。例如,你可以根据版本和构建号来重命名它们,或者连同你的源代码进行版本控制。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:437092次
积分:4080
积分:4080
排名:第5731名
原创:67篇
转载:26篇
评论:108条
(3)(4)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1)(4)(1)(1)(1)(2)(2)(1)(1)(5)(15)(3)(1)(6)(2)(9)(2)(1)(1)(9)(13)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&侠盗飞车圣安地列斯内置刷车器要celo|侠盗飞车_侠盗飞车视频_爱拍原创

我要回帖

更多关于 buildcfg.json 的文章

 

随机推荐