gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:19:09 25 4
gpt4 key购买 nike

我正在尝试重写一些 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 childrenContractProvider ; 8 Parent does not contain childrenContractTariff ; 16 Parent does not contain childrenContractSerialNumber ; 32 Parent does not contain childrenContractCustomerInfoBitmap ; 2  ContractCustomerProfile 6  ContractCustomerNumber 32ContractPassengerInfoBitmap ; 2  ContractPassengerClass 8  ContractPassengerTotal 8

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com