`
G007N
  • 浏览: 13118 次
  • 性别: Icon_minigender_1
  • 来自: 云南昆明
社区版块
存档分类
最新评论

java解析js数组数据

阅读更多
js代码如下:
var at_arrEle11 = new Array;at_arrEle11[0] = new Array("4","舞街区")at_arrEle11[1] = new Array("1","航海世纪")at_arrEle11[2] = new Array("9","英雄之城")at_arrEle11[3] = new Array("7","天子")at_arrEle11[4] = new Array("13","机甲世纪革新版")at_arrEle11[5] = new Array("3","机甲世纪")at_arrEle11[6] = new Array("12","帝国文明")at_arrEle11[7] = new Array("8","龙战")var at_arrEle4 = new Array;var at_arrEle5 = new Array;at_arrEle5[0] = new Array("0","中心帐户")at_arrEle5[1] = new Array("1","分区帐户") var allow_sub = true;var flag = false;var at_par = 0;var at_opar;var at_oele1;var at_oele1c;var at_oele6;var at_oele6t;var at_onum; //var at_oele3t;var at_oele4;var at_oele4t;var at_oele11;var at_oele11t;var at_oele12;var at_oele13;var at_oele5;var at_oele5t;function at_fi(par){ at_oele1 = document.getElementById("at_ele1");at_oele1c = document.getElementById("at_ele1c");at_oele6 = document.getElementById("at_ele6");at_oele6t = document.getElementById("at_ele6t");at_oele5 = document.getElementById("at_ele5");at_oele5t = document.getElementById("at_ele5t");at_oele4 = document.getElementById("at_ele4");at_oele4t = document.getElementById("at_ele4t"); at_oele11 = document.getElementById("at_ele11");at_oele11t = document.getElementById("at_ele11t"); at_oele12 = document.getElementById("at_ele12");at_oele13 = document.getElementById("at_ele13");at_onum = document.getElementById("at_num");at_opar = document.getElementById("at_par");at_onum.value = "";at_opar.value = "";  at_par = parseInt(par);if((at_par!=10)&&(at_par!=15)&&(at_par!=30)&&(at_par!=60)&&(at_par!=100) || isNaN(at_par)){allow_sub = false;alert("充值表单初始化失败!");}else {at_opar.value = at_par;at_onum.value = 1;at_iele11();at_iele5();at_oele4.disabled = false;at_oele12.innerHTML = '<font color="red">'+at_par+'元</font>';}}function at_fs(){if(allow_sub == false){alert("充值金额不正确!");return false;}if(at_oele11.value==""){at_oele11.focus();alert("请选择充值游戏!");return false;}at_oele1.value = at_oele1.value.replace(/\s/g,"");at_oele1c.value = at_oele1c.value.replace(/\s/g,"");if(at_oele1.value==""){at_oele1.focus();alert("请输入帐号");return false;}if(at_oele1c.value != at_oele1.value){at_oele1c.value = "";at_oele1c.focus();alert("两次帐号输入不一致");return false;}if((at_oele5.length!=true) && (at_oele5.value=="")){at_oele5.focus();alert("请选择充值类型!");return false;} if( (at_oele4.disabled!=true) && (at_oele4.value=="") && (at_oele4.length!=1)){at_oele4.focus();alert("请选择充值服务器!");return false;}if(at_oele4.disabled == true){at_oele4t.value = "";}var additon = "帐号:"+at_oele1.value+";";additon += "充值游戏:"+at_oele11t.value+";";additon += "充值类型:"+at_oele5t.value+";"; if(at_oele4t.value!=""){additon += "充值游戏分区:"+at_oele4t.value+";";}additon += "充值金额:"+at_opar.value+"元";document.getElementById("at_addition").value = additon;return true;}function check_at_ele1(){if(at_oele11.value==""){at_oele11.focus();alert("请选择充值游戏!");return false;}if(at_oele1.value == ""){at_oele1.value = "";at_oele1.focus();alert("请填写充值帐号!");return false;}if(at_oele1c.value != at_oele1.value){at_oele1c.value = "";at_oele1c.focus();alert("充值帐号与确认充值帐号不一致!");return false;}at_oele13.innerHTML = "";var xmlHttpReq = false;if(window.XMLHttpRequest){xmlHttpReq = new XMLHttpRequest();if(xmlHttpReq.overrideMimeType){xmlHttpReq.overrideMimeType('text/xml');}}else if(window.ActiveXObject){var XmlHttpVersions = ['Microsoft.XMLHTTP', 'MSXML6.XMLHTTP', 'MSXML5.XMLHTTP','MSXML4.XMLHTTP', 'MSXML3.XMLHTTP', 'MSXML2.XMLHTTP', 'MSXML.XMLHTTP'];for (var i=0; i < XmlHttpVersions.length; i++){try{xmlHttpReq = new ActiveXObject(XmlHttpVersions[i]);break;}catch (ex){continue;}}}if(!xmlHttpReq){alert("AJAX初始化失败!");return false;}xmlHttpReq.open("GET", "/auto_proxy.php?p1=10022004&p2="+at_oele1.value+"&p3="+at_oele11.value+"&p4="+at_opar.value, false);xmlHttpReq.send(null);var strMsg = "";switch(xmlHttpReq.responseText){case "0": strMsg = "该游戏不支持"+at_opar.value+"元的充值,请选择其他面值继续充值"; break;case "1": strMsg = "请填写游戏,充值帐号等信息"; break;case "2": strMsg = "网路异常,无法验证游戏帐号信息,无法继续充值"; break;case "3": strMsg = "官方未返回帐号验证信息,无法继续充值"; break;case "4": strMsg = "充值帐号验证失败,无法继续充值"; break;case "1004": strMsg = "代理商的身份没有足够权限访问,无法继续充值"; break;case "52005": strMsg = "通行证帐号查询异常,无法继续充值"; break;}if (strMsg != ""){at_oele13.innerHTML = '<font color="red">'+strMsg+'</font>';alert(strMsg);allow_sub = false;}else {allow_sub = true;var obj_json = eval('(' + xmlHttpReq.responseText + ')');if(at_oele5.value!=0){at_oele4.disabled = false;}at_oele4.length = 0;at_oele4.options.add(new Option("请选择...",""));for (var i=0; i<obj_json.area_id.length; i++){var opt = document.createElement('OPTION');opt.value = obj_json.area_id[i];opt.text = unescape(obj_json.area_name[i]);at_oele4.options.add(opt);}var str_prop="";for (var i=0; i<obj_json.prop_name.length; i++){at_oele4.disabled = false;flag = true;str_prop += unescape(obj_json.prop_name[i])+" 数量 "+ obj_json.prop_amount[i]+"<br>";}if (str_prop == ""){flag = false;str_prop = "无道具";}at_oele13.innerHTML = str_prop;}}function at_ele1c_blur(obj){check_at_ele1();}function at_iele11(){at_oele11.length = 0;at_oele11.options.add(new Option("请选择...",""));for(var i=0; i < at_arrEle11.length; i++){var opt = document.createElement('OPTION');opt.value = at_arrEle11[i][0];opt.text = at_arrEle11[i][1];at_oele11.options.add(opt); }}function at_ele11_change(obj){at_oele4.disabled = true;if(at_oele11.value==1){at_oele5.length = 0;at_oele5.options.add(new Option("请选择...",""));at_oele5.options.add(new Option("中心帐户","0"));}else if(at_oele11.value==9 || at_oele11.value==12){at_oele5.length = 0;at_oele5.options.add(new Option("请选择...",""));at_oele5.options.add(new Option("分区帐户","1"));}else{at_iele5();}if ((at_oele1.value!="") && (obj.value!="")){check_at_ele1();}at_oele11t.value=obj.options[obj.selectedIndex].text;}function at_iele5(){at_oele5.length = 0;at_oele5.options.add(new Option("请选择...",""));for(var i=0; i < at_arrEle5.length; i++){var opt = document.createElement('OPTION');opt.value = at_arrEle5[i][0];opt.text = at_arrEle5[i][1];at_oele5.options.add(opt); }}function at_ele5_change(obj){at_oele5t.value=obj.options[obj.selectedIndex].text;if(at_oele5.value==0 && flag==false){at_oele4.disabled = true;}else{at_oele4.disabled = false;}}function at_ele4_change(obj){at_oele4t.value=obj.options[obj.selectedIndex].text;}function isIE(){if(window.navigator.userAgent.toLowerCase().indexOf("msie")>=1){return true; }else{ return false;} } if(!isIE()){HTMLElement.prototype.__defineGetter__("innerText", function(){var anyString = "";var childS = this.childNodes;for(var i=0; i<childS.length; i++) {if(childS[i].nodeType==1){anyString += childS[i].innerText;}else if(childS[i].nodeType==3){anyString += childS[i].nodeValue;} }return anyString;} ); HTMLElement.prototype.__defineSetter__("innerText", function(sText){this.textContent=sText; } ); }


/**
* 解析js代码专用方法,适用于解析js中的Array数组数据
* @param jsStr
* @author G007N
* @return
*/
public String getJsValue (String jsStr) {
String output = "";   //解析后的字符串
String str1 = "";     //把js中的"号替换成'号后的字符串
String str2 = "";     //把js中的new Array('替换成空字符串后的字符串
String str3 = "";     //把js中的')号替换成空字符串后的字符串
String str4 = "";     //把js中的','号替换成:号后的字符串
String str5 = "";     //把js中的 = 号替换成=号后的字符串
String str6 = "";     //把js中的[0]=替换成=%后的字符串
String str7 = "";     //把js中的;号替换成空字符后的字符串
String str8 = "";     //按照at_的规律截取并加上;号后的字符串
String str9 = "";     //从%开始截取后的字符串
String str10 = "";    //把js中的var ;new Array;替换成空字符串后的字符串
String str11 = "";    //把js中的var ;new Array替换成空字符串后的字符串
String str12 = "";    //把js中的var ;new Array();替换成空字符串后的字符串
String str13 = "";    //把js中的()号替换成空字符串后的字符串
String str14 = "";    //把js中的;%号替换成%号后的字符串
String str15 = "";    //把js中的 ;号替换成;号后的字符串
String str16 = "";    //把js中的//号替换成空字符串后的字符串
String str17 = "";    //把js中的 var替换成var后的字符串
String str18 = "";    //把js中的', '号替换成:号后的字符串
String str19 = "";    //把js中的' , '号替换成:号后的字符串
String str20 = "";    //按照=号的规律截取并加上;号后的字符串
String str21 = "";    //把数组名称、下标及数组键值一一匹配后的字符串
String str22 = "";    //按照];号的规律截取并加上]%号后的字符串
String str23 = "";    //数组键值字符串
String str24 = "";    //去掉非数组的js代码字符串
String str25 = "";    //标准的键值数据字符串
String str26 = "";    //标准的数组名称、下标、键值字符串
String info1[] = null;//按照at_字符规律截断的字符串
String info2[] = null;//按照=号规律截断的字符串
String info3[] = null;//按照];号规律截断的字符串
String info4[] = null;//按照]%号规律截断的字符串
String info5[] = null;//按照];号规律截断的字符串
ArrayList<String> varIndexList = null;//数组变量名称及数组下标list
ArrayList<String> keyValueList = null;//数组键值list

//把js字符串中的""双引号替换成'单引号
str1 = jsStr.replaceAll("\"","'");
//判断js代码中是否有数组
if (str1.indexOf("new Array('") == -1) {
output = "无数组";
} else {
//开始替换字符串中的各种字符
str2 = str1.replace("new Array('", "");
str3 = str2.replace("')", "");
str4 = str3.replace("','", ":");
str5 = str4.replace(" = ", "=");
str6 = str5.replace("[0]=", "=%");
str7 = str6.replace(";", "");

/*
* 把替换后的字符串按照at_字符规律进行分段截取,然后再从=号开始截取我们需要的数据,取完一个就在后面加;号进行分隔
* 因为js中还有其它我们不需要的非数组数据代码,所以在截取时会报异常,我们采用try,catch非常手段来把异常去掉
* 以下类似代码都是如此解释,下面类似代码省略注释,不做说明
*/
try {
for (int i = 0; i < str7.length(); i++) {
info1 = str7.split("at_");
str8 += info1[i].substring(info1[i].indexOf("=")+1)+";";
}
} catch (Exception e1) {
}

try {
for (int i = 0; i < str5.length(); i++) {
info2 = str5.split("=");
str20 += info2[i].substring(info2[i].indexOf("at_"))+";";
}
} catch (Exception e2) {
}

try {
for (int i = 0; i < str20.length(); i++) {
info3 = str20.split("];");
str22 += info3[i].substring(info3[i].indexOf(";")+1)+"]%";
}
} catch (Exception e3) {
}

//经过上面的几次截取后,我们的数据基本是出来了,为了不同数组变量间好区分,我们用%号进行不同数组变量间的分隔
str23 = str22.replace(";", "%");

//接下来我们继续按照老办法进行有规律的截取
try {
varIndexList = new ArrayList<String>();
//我们把下面标准的数组变量及数组下标一起装到varIndexList中去,方便和后面的数组值进行一 一匹配
for (int i = 0; i < str23.length(); i++) {
info4 = str23.split("%");
if (info4[i].indexOf("[") != -1) {
varIndexList.add(info4[i]);
}
}
} catch (Exception e4) {
}

//由于许多js中大家写的习惯不一致,存在一些各种格式,所以我们把这些可能出现的字符都统统替换成标准格式
str9 = str8.substring(str8.indexOf("%")+1,str8.length());
str10 = str9.replace("var ;new Array;", "");
str11 = str10.replace("var ;new Array", "");
str12 = str11.replace("var ;new Array();", "");
str13 = str12.replace("()", "");
str14 = str13.replace(";%", "%");
str15 = str14.replace(" ;", ";");
str16 = str15.replace("//", "");
str17 = str16.replace(" var", "var");
str18 = str17.replace("', '", ":");
str19 = str18.replace("' , '", ":");

//到这里js数组解析已经结束,我们把后面的那些非数组的js代码扔掉不要
if (str19.indexOf("var") != -1) {
str24 = str19.substring(0,str19.indexOf("var"))+";";
}

//现在str24打印出来结果为:str24===4:舞街区;1:航海世纪;9:英雄之城;7:天子;13:机甲世纪革新版;3:机甲世纪;12:帝国文明;8:龙战%0:中心帐户;1:分区帐户;
//System.out.println("str24==="+str24);
//通过上面的打印我们看出,%号前面的数据没有按标准的;号进行分隔,我们替换一下,把它变标准
str25 = str24.replace("%", ";%");

//我们把这个标准的数组键值装到keyValueList中去,方便和前面varIndexList中的数组变量名进行一 一匹配
keyValueList = new ArrayList<String>();
try {
for (int i = 0; i < str25.length(); i++) {
info5 = str25.split(";");
keyValueList.add(info5[i]);
}
} catch (Exception e5) {
}

/*
* 现在我们开始进行数组变量名称及下标与数组值的一 一匹配
* 我们查找以%分隔的不同数组变量,查到后就同样在不同的数组变量名前面加上%来进行不同变量间的分隔
*/
for (int i = 0; i < varIndexList.size(); i++) {
if (keyValueList.get(i).indexOf("%") != -1) {
str21 += "%"+varIndexList.get(i)+":"+keyValueList.get(i)+";";
} else {
str21 += varIndexList.get(i)+":"+keyValueList.get(i)+";";
}
}

/*
* 现在我们打印str21的结果为:str21===at_arrEle11[0]:4:舞街区;at_arrEle11[1]:1:航海世纪;at_arrEle11[2]:9:英雄之城;at_arrEle11[3]:7:天子;at_arrEle11[4]:13:机甲世纪革新版;at_arrEle11[5]:3:机甲世纪;at_arrEle11[6]:12:帝国文明;at_arrEle11[7]:8:龙战;%at_arrEle5[0]:%0:中心帐户;at_arrEle5[1]:1:分区帐户;
* 可以看出 %at_arrEle5[0]:%0:中心帐户 这个地方分隔的还不够标准,我们再次替换一下就是标准的可用数据了
*/
//System.out.println("str21==="+str21);
str26 = str21.replace(":%", ":");
//我这里由于客户需要的数据是变量名称为at_ele格式,所以替换一下,大家自行处理
output = str26.replace("arrEle", "ele");
}

/*
* 费了九牛二虎之力,最后我们来看一下我们的打印结果,如下
* at_ele11[0]:4:舞街区;at_ele11[1]:1:航海世纪;at_ele11[2]:9:英雄之城;at_ele11[3]:7:天子;at_ele11[4]:13:机甲世纪革新版;at_ele11[5]:3:机甲世纪;at_ele11[6]:12:帝国文明;at_ele11[7]:8:龙战;%at_ele5[0]:0:中心帐户;at_ele5[1]:1:分区帐户;
*/
//System.out.println("output==="+output);
return output;
}
0
1
分享到:
评论

相关推荐

    java实现二维数组转json的方法示例

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON数据通常以键值对的形式存在,例如`"key": "value"`。在Java中,我们可以使用`org.json`库或者`...

    二维数组转json的java源码

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它常用于服务器与客户端之间的数据传输。本篇文章将深入探讨如何使用Java实现二维数组到JSON的转换。...

    js接收并转化Java中的数组对象的方法

    在解析之后,`addVehicleArray`就是一个JavaScript对象数组,可以按照普通JavaScript数组的方式进行操作。 **代码示例** 假设我们已经通过某种方式获取了`szJsonStr`字符串,我们可以这样解析并使用: ```...

    JAVA 解析JSON格式数据

    总结,Java解析JSON主要依靠第三方库,如Jackson和Gson,它们提供了解析JSON字符串到Java对象,以及将Java对象序列化为JSON字符串的功能。对于复杂的JSON结构,可以通过创建相应的Java类来映射。在实际操作中,务必...

    解析json数组所用到的jar包以及demo

    在Java编程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能容易地阅读和编写。JSON数组是JSON的一种基本结构,用于存储有序的元素集合。在Java中处理JSON数据时,我们通常...

    Android Studio解析JSON数组

    首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Android应用中,我们经常使用它来与服务器交换数据。JSON数据通常以键值对的...

    java解析json格式数据 json.jar

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输,因为其结构清晰、易于阅读和编写,同时也容易让机器解析和生成。在Java开发中,处理JSON数据是必不可...

    java解析json数据

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间的数据传输,因为它易于读写,同时也被人类和机器所理解。Java中解析JSON数据主要依赖于一些库,如org.json库...

    JAVA解析JSON相关.docx

    标题与描述均提到了“JAVA解析JSON”,这表明文档主要关注的是如何在Java环境中解析JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java...

    java动态数组的应用

    在Java编程语言中,动态数组是一种非常重要的数据结构,它能够根据实际需求自动调整其大小,从而有效地存储和管理元素。在本文中,我们将深入探讨Java中的动态数组,包括其实现原理、应用场景以及如何使用Java标准库...

    kettle解析json串

    - JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 - 在数据处理过程中,经常需要解析JSON文件以提取所需的信息,这在Web服务数据交互、日志分析等...

    JSON解析数组

    总结,Android JSON解析数组涉及到网络请求、JSON库的使用、数据映射到Java对象等多个环节。理解这些知识点对于进行Android应用开发是至关重要的,尤其在与服务器进行数据交互时。通过熟练掌握这些技巧,开发者能够...

    JavaSE034Arrays类解析及数组疑难剖析.docx

    在Java中,数组是一个对象,它可以存储基本类型(如int, double等)或者引用类型的数据。当二维数组存储的是引用类型时,实际上数组并不直接存储对象,而是存储这些对象的引用。这意味着实际的对象在Java的堆内存中...

    Android_JSON数据解析

    在Android开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,因其简洁、易读、易编写的特点,被广泛应用于服务器与客户端之间的数据传输。本篇将详细讲解如何在Android应用中解析JSON数据,主要...

    JSON解析数组,单个对象的实现

    在上述代码中,`jsonString`是一个JSON格式的字符串,我们使用`JSON.parse()`将其转换为JavaScript数组`jsonArray`。接着,我们遍历这个数组,访问每个对象并打印其`name`和`age`属性。 在`LessonDemo`文件中,很...

    java解析json完整案例

    以上就是使用Java解析JSON的基本操作,包括从字符串、文件或网络获取JSON数据,以及将Java对象序列化为JSON。在实际项目中,你可能还需要处理更复杂的JSON结构,比如嵌套的对象和数组,以及处理错误情况。对于更复杂...

    java FASTJSON 解析复杂JSON实例源码

    - `JSONArray.parseArray(String jsonString, Class&lt;T&gt; clazz)`:将JSON字符串解析为Java对象数组。 2. **将Java对象转换为JSON字符串** - `JSON.toJSONString(Object obj)`:将Java对象转换为JSON格式的字符串。...

    JAVA解析JSON数据

    在Java编程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能容易地读取和编写数据。JSON通常用于Web服务与客户端之间的数据传输,因为它的结构清晰、易于理解。本篇文章将...

    这里是一个json数据解析json对象数组的示例程序

    这就是一个完整的JSON对象数组解析到Java对象的示例。 总结起来,本示例主要涉及了以下几个知识点: 1. JSON数据格式及其基本结构:对象和数组。 2. Java中的数据模型:创建User类来映射JSON对象。 3. 使用第三方库...

Global site tag (gtag.js) - Google Analytics