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


Posted in Javascript onAugust 11, 2016

在做项目时,要向ocx控件下发命令,就要在js中得到java中的对象,然后拼成一种格式,下发下去。。。当对象是一个时比较简单,但如果对象是一个数组时,就略显麻烦了。

开始我以为有简单的方式,可以直接进行内容的转化,后来发现不可以,网上说js与java没有桥接的东西,所以呢:

我的解决方案是:在action层,将java的对象数组转化为Json串,而在js中,再把json转化为数组对象。

1.将java的对象数组转化为Json串:

要用到两个类:

net.sf.json.JSONObject
net.sf.json.JSONArray


//将每个vehicle对象拼接为json格式的对象,用于命令下发
JSONObject json = JSONObject.fromObject(v); //v即对象
jsonArray.add(json);
//System.out.println(jsonArray.toString());
//用于命令下发
sendCommandList = jsonArray.toString();

将其放在for循环中。

2.js将其转化为对象数组:

//注意:此时得到的是Json串。

//注意:要加上escapeJavaScript="false" escape="false" ,否则传过来Json字符串中的引号都会被解析成为"

var szJsonStr = '<s:property escapeJavaScript="false" escape="false" value="sendCommandList" />';

最后:

//把Json字符串转化为对象数组
var addVehicleArray = eval(szJsonStr);

在用的时候,就直接用addVehicleArray[i].vehicleType;即可以了。。。。。。

扩展:

JSONObject与JSONArray的使用

1.JAR包简介

要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:

commons-lang.jar
commons-beanutils.jar
commons-collections.jar
commons-logging.jar
ezmorph.jar
json-lib-2.2.2-jdk15.jar

2.JSONObject对象使用

JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包。在本例中,我们将使用JSONObject类创建JSONObject对象,然后我们打印这些对象的值。为了使用JSONObject对象,我们要引入"net.sf.json"包。为了给对象添加元素,我们要使用put()方法。

2.1.实例1

package jsontest;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;


public class JSONObjectSample {


  // 创建JSONObject对象
  private static JSONObject createJSONObject() {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("username", "huangwuyi");
    jsonObject.put("sex", "男");
    jsonObject.put("QQ", "413425430");
    jsonObject.put("Min.score", new Integer(99));
    jsonObject.put("nickname", "梦中心境");
    return jsonObject;
  }


  public static void main(String[] args) {
    JSONObject jsonObject = JSONObjectSample.createJSONObject();//静待方法,直接通过类名+方法调用
    // 输出jsonobject对象
    System.out.println("jsonObject:" + jsonObject);


    // 判读输出对象的类型
    boolean isArray = jsonObject.isArray();
    boolean isEmpty = jsonObject.isEmpty();
    boolean isNullObject = jsonObject.isNullObject();
    System.out.println("是否为数组:" + isArray + ", 是否为空:" + isEmpty
        + ", isNullObject:" + isNullObject);


    // 添加属性,在jsonObject后面追加元素。
    jsonObject.element("address", "福建省厦门市");
    System.out.println("添加属性后的对象:" + jsonObject);


    // 返回一个JSONArray对象
    JSONArray jsonArray = new JSONArray();
    jsonArray.add(0, "this is a jsonArray value");
    jsonArray.add(1, "another jsonArray value");
    jsonObject.element("jsonArray", jsonArray);
    //在jsonObject后面住家一个jsonArray
    JSONArray array = jsonObject.getJSONArray("jsonArray");
    System.out.println(jsonObject);
    
    
    System.out.println("返回一个JSONArray对象:" + array);
    // 添加JSONArray后的值
    // {"username":"huangwuyi","sex":"男","QQ":"413425430","Min.score":99,"nickname":"梦中心境","address":"福建省厦门市","jsonArray":["this is a jsonArray value","another jsonArray value"]}
    System.out.println("结果=" + jsonObject);


    // 根据key返回一个字符串
    String username = jsonObject.getString("username");
    System.out.println("username==>" + username);


    // 把字符转换为 JSONObject
    String temp = jsonObject.toString();
    JSONObject object = JSONObject.fromObject(temp);
    // 转换后根据Key返回值
    System.out.println("qq=" + object.get("QQ"));


  }


}

输出结果

jsonObject:{"username":"huangwuyi","sex":"男","QQ":"413425430","Min.score":99,"nickname":"梦中心境"}
是否为数组:false, 是否为空:false, isNullObject:false
添加属性后的对象:{"username":"huangwuyi","sex":"男","QQ":"413425430","Min.score":99,"nickname":"梦中心境","address":"福建省厦门市"}
{"username":"huangwuyi","sex":"男","QQ":"413425430","Min.score":99,"nickname":"梦中心境","address":"福建省厦门市","jsonArray":["this is a jsonArray value","another jsonArray value"]}
返回一个JSONArray对象:["this is a jsonArray value","another jsonArray value"]
结果={"username":"huangwuyi","sex":"男","QQ":"413425430","Min.score":99,"nickname":"梦中心境","address":"福建省厦门市","jsonArray":["this is a jsonArray value","another jsonArray value"]}
username==>huangwuyi
qq=413425430

2.2.实例2.

package jsontest;


import net.sf.json.JSONArray;
import net.sf.json.JSONObject;


public class JSONTest {
  public static void main(String args[])
  {
    JSONObject jsonObj0 = new JSONObject();
    JSONObject jsonObj = new JSONObject();
    JSONObject jsonObj2 = new JSONObject();
    JSONObject jsonObj3 = new JSONObject();
    JSONArray jsonArray = new JSONArray();
    
    //创建jsonObj0
    jsonObj0.put("name0", "zhangsan");
    jsonObj0.put("sex1", "female");
    System.out.println("jsonObj0:"+jsonObj0);
    
    //创建jsonObj1
    jsonObj.put("name", "xuwei");
    jsonObj.put("sex", "male");
    System.out.println("jsonObj:"+jsonObj);
  
    //创建jsonObj2,包含两个条目,条目内容分别为jsonObj0,jsonObj1
    jsonObj2.put("item0", jsonObj0);
    jsonObj2.put("item1", jsonObj);
    System.out.println("jsonObj2:"+jsonObj2);
    
    //创建jsonObj3,只有一个条目,内容为jsonObj2
    jsonObj3.element("j3", jsonObj2);
    System.out.println("jsonObj3:"+jsonObj3);
  
    //往JSONArray中添加JSONObject对象。发现JSONArray跟JSONObject的区别就是JSONArray比JSONObject多中括号[]
    jsonArray.add(jsonObj);
    System.out.println("jsonArray:"+jsonArray);
    
    JSONObject jsonObj4 = new JSONObject();
    jsonObj4.element("weather", jsonArray);
    System.out.println("jsonObj4:"+jsonObj4);
  }
}

输出结果:

jsonObj0:{"name0":"zhangsan","sex1":"female"}

jsonObj:{"name":"xuwei","sex":"male"}

jsonObj2:{"item0":{"name0":"zhangsan","sex1":"female"},"item1":{"name":"xuwei","sex":"male"}}

jsonObj3:{"j3":{"item0":{"name0":"zhangsan","sex1":"female"},"item1":{"name":"xuwei","sex":"male"}}}

jsonArray:[{"name":"xuwei","sex":"male"}]

jsonObj4:{"weather":[{"name":"xuwei","sex":"male"}]}

以上这篇js接收并转化Java中的数组对象的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS面向对象、prototype、call()、apply()
May 14 Javascript
Javascript 遍历页面text控件详解
Jan 06 Javascript
jquery简单实现幻灯片的方法
Aug 03 Javascript
学习javascript面向对象 理解javascript原型和原型链
Jan 04 Javascript
深入学习jQuery Validate表单验证(二)
Jan 18 Javascript
AngularJS基础 ng-switch 指令简单示例
Aug 03 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
Dec 13 Javascript
详解如何在Vue2中实现组件props双向绑定
Mar 29 Javascript
Vue+axios实现统一接口管理的方法
Jul 23 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
微信小程序自定义单项选择器样式
Jul 25 Javascript
JavaScript 原型与原型链详情
Nov 02 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 #Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
Aug 11 #Javascript
基于js对象,操作属性、方法详解
Aug 11 #Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
Aug 11 #Javascript
Node.js中防止错误导致的进程阻塞的方法
Aug 11 #Javascript
浅谈js中对象的使用
Aug 11 #Javascript
js倒计时简单实现代码
Aug 11 #Javascript
You might like
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
JavaScript 继承详解 第一篇
2009/08/30 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
基于Python实现文件大小输出
2016/01/11 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
小学语文教学反思
2014/02/10 职场文书
制作部班长职位说明书
2014/02/26 职场文书
计算机软件专业求职信
2014/06/10 职场文书
外贸业务员求职信
2014/06/16 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
奔腾年代观后感
2015/06/09 职场文书
2016三八妇女节校园广播稿
2015/12/17 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
Go timer如何调度
2021/06/09 Golang
mysql如何能有效防止删库跑路
2021/10/05 MySQL