我正在尝试重写一些 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/