>  기사  >  웹 프론트엔드  >  Java에서 배열 객체를 수신하고 변환하는 js 메소드

Java에서 배열 객체를 수신하고 변환하는 js 메소드

高洛峰
高洛峰원래의
2017-01-14 10:45:291470검색

프로젝트 작업 시 ocx 컨트롤에 명령을 내리려면 js에서 java로 개체를 가져온 다음 형식으로 넣어서 보내야 합니다. . . 객체가 1이면 간단하지만, 객체가 배열이면 좀 더 번거롭습니다.

처음에는 콘텐츠를 직접 변환하는 간단한 방법이 있을 줄 알았는데 나중에 보니 js와 java 사이에 브릿지가 없다고 해서요.

제가 해결한 방법은 다음과 같습니다. 액션 레이어에서는 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 = &#39;<s:property escapeJavaScript="false" escape="false" value="sendCommandList" />&#39;;

마지막으로:

//把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 패키지는 Bean 세트입니다. , 컬렉션, 맵, Java 배열 및 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.

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에서 배열 객체를 받아 변환하는 방법은 편집기에서 공유한 내용의 전부입니다. 완성되었으므로 여러분에게 참고가 되기를 바랍니다. 또한 모든 사람이 PHP 중국어 웹사이트를 지원하기를 바랍니다.

js가 Java에서 배열 객체를 수신하고 변환하는 방법에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.