java - 如何将 JavaScript 数组转换为 Java 数组

标签 java javascript arrays

我正在尝试重写一些 JavaScript 逻辑发现的 JavaScript 函数。 您能否帮我将此 JavaScript 数组放入某个 Java 兼容对象中,以便我可以循环遍历它的所有 elemnet?

我需要将其作为 Java 函数内的硬编码数组。

对我来说主要问题是它可能在数组中包含数组。

this.contract = [
        ["ContractNetworkId",24],
        ["ContractProvider",8],
        ["ContractTariff",16],
        ["ContractSerialNumber",32],
        ["ContractCustomerInfoBitmap",2,[
            ["ContractCustomerProfile",6],
            ["ContractCustomerNumber",32]
        ]],
        ["ContractPassengerInfoBitmap",2, [
            ["ContractPassengerClass",8],
            ["ContractPassengerTotal",8]
        ]],
        ["ContractVehicleClassAllowed",6],
        ["ContractPaymentPointer",32],
        ["ContractPayMethod",11],
        ["ContractServices",16],
        ["ContractPriceAmount",16],
        ["ContractPriceUnit",16],
        ["ContractRestrictionBitmap",7,[
            ["ContractRestrictStart",11],
            ["ContractRestrictEnd",11],
            ["ContractRestrictDay",8],
            ["ContractRestrictTimeCode",8],
            ["ContractRestrictCode",8],
            ["ContractRestrictProduct",16],
            ["ContractRestrictLocation",16]
        ]].....

最佳答案

创建一个新类来表示复杂对象,因为它们都有 label和一个 value 。因为它们的属性之一可以是 list对于同一对象,您也可以添加它。

类似于:

public class CustomObject{
    private String label;
    private int value;
    private List<CustomObject> coList;

    public CustomObject(String label, int value){
       this.label=label;
       this.value=value;
    }

    public CustomObject(String label, int value, List coList){
       this.label=label;
       this.value=value;
       this.coList=coList;
    }

    //getters and setters for the attributes

}

然后,创建一个 List<CustomObject> myCustomObjList=new ArrayList<CustomObject>()在您要添加元素的数据持有者类中:

myCustomObjList.add(new CustomObject("label",1)); //no list

final CustomObject obj2=new CustomObject("label2",2);
final List<CustomObject> tmpList=new ArrayList<CustomObject>();
tmpList.add(obj2);
myCustomObjList.add(new CustomObject("label",3,tmpList)); //CustomObject with a list

等等...

然后您可以迭代列表以获取所需的值。检查list null 的每个 CustomObject 的属性首先,如果不是null ,也迭代它。

示例:

public static void main(String[] args) {
        final List<CustomObject> myCustomObjList = new ArrayList<CustomObject>();
        List<CustomObject> tmpList = new ArrayList<CustomObject>();

        myCustomObjList.add(new CustomObject("ContractNetworkId", 24));
        myCustomObjList.add(new CustomObject("ContractProvider", 8));
        myCustomObjList.add(new CustomObject("ContractTariff", 16));
        myCustomObjList.add(new CustomObject("ContractSerialNumber", 32));

        CustomObject obj1 = new CustomObject("ContractCustomerProfile", 6);
        CustomObject obj2 = new CustomObject("ContractCustomerNumber", 32);

        tmpList.add(obj1);
        tmpList.add(obj2);

        myCustomObjList.add(new CustomObject("ContractCustomerInfoBitmap", 2, tmpList));

        tmpList=new ArrayList<CustomObject>();

        obj1 = new CustomObject("ContractPassengerClass", 8);
        obj2 = new CustomObject("ContractPassengerTotal", 8);

        tmpList.add(obj1);
        tmpList.add(obj2);        

        myCustomObjList.add(new CustomObject("ContractPassengerInfoBitmap", 2, tmpList));

        for (CustomObject parent : myCustomObjList) {
            System.out.print(parent.getLabel()+" ; ");
            System.out.println(parent.getValue());

            if (parent.getCoList() != null) {
                for (CustomObject child : parent.getCoList()) {
                    System.out.print("  "+child.getLabel()+" ");
                    System.out.println(child.getValue());
                }
            }
            else{
                System.out.println(" Parent does not contain children");
            }
        }
        tmpList.clear();
    }

将产生输出:

ContractNetworkId ; 24
 Parent does not contain children
ContractProvider ; 8
 Parent does not contain children
ContractTariff ; 16
 Parent does not contain children
ContractSerialNumber ; 32
 Parent does not contain children
ContractCustomerInfoBitmap ; 2
  ContractCustomerProfile 6
  ContractCustomerNumber 32
ContractPassengerInfoBitmap ; 2
  ContractPassengerClass 8
  ContractPassengerTotal 8

关于java - 如何将 JavaScript 数组转换为 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27200481/

相关文章:

Java程序不喜欢这个词 "Scanner"

java - 无法在 Apple MacPro 上启动新的 Android 应用程序

javascript - google.maps.MapOptions + JSON : avoid eval()?

javascript - 如何在不使用 jQuery 的情况下使函数淡入淡出? (JavaScript)

java - 哪个迭代数组的习惯用法最有效?

c - C中的内存溢出混淆

java - 将 hsqldb 与 Ibatis 结合使用来测试生产中依赖于 Postgres 的配置

java - 按钮自动点击?

java - .jar 导出不理解项目文件夹内的相对路径

javascript - 向表单元素添加事件