如何将 JSON 数组转换为 List 以在 oracle MCS 中创建 DataControl?

How to convert the JSON array to List to create DataControl in oracle MCS?

我正在尝试为以下 Json 代码创建列表视图

{"ImageList" :[

 {
  "ENO":"87",
  "ENAME" : "john",
   "EJOB":"clerk",
  },{
    "ENO":"21",
    "ENAME" : "Abdul",
    "EJOB":"Manager",
  } ]
}

这是数据控制程序 此 DataControl 由另一个 Class

调用
 Runnable mcsJob = new Runnable(){
   public void run(){ 
   try {

           CustomAPI customApi = mobileBackend.getServiceProxyCustomApi();            
           MCSRequest request = new MCSRequest(mobileBackend.getMbeConfiguration());
           request.setConnectionName(mafConnection);            
           request.setRequestURI(requestURI);            
           request.setHttpMethod(httpMethod);            
           request.setPayload(payload==null?"":payload);
           request.setRetryLimit(0);
           HashMap<String,String> headers = new HashMap<String,String>();

           if(httpHeaders!=null)
           {
               headers.putAll(httpHeaders);
           }

           request.setHttpHeaders(headers);  
           MCSResponse response = customApi.sendForStringResponse(request);
           String jsonResponse = (String) response.getMessage(); 
           setEmployeeSearchResponse(jsonResponse);
           //Converting JSON string
           apiResponse.setEmpsearchResponse(employeeSearchResponse);
           JSONObject jsonObject = new JSONObject(apiResponse.getEmpsearchResponse());
           JSONObject bodyObject = jsonObject.getJSONObject("Body");
           JSONObject ProcessObject=bodyObject.getJSONObject("processResponse");
            JSONArray empObject=ProcessObject.getJSONArray("ImageList"); 

           for(int i=0;i<empObject.length();i++)

               {

                JSONObject js = empObject.getJSONObject(i); 
                String name= ""+js.getString("ENO");
                String photo = ""+js.getString("ENAME");
                String empno=""+js.getString("EJOB");
                 EmployeeSearchPOJO  empo=new EmployeeSearchPOJO();
                  empo.setEMPNO(empno);
                   empo.setENAME(name);
                   empo.setPHOTO(photo);   
                   employeeList.add(empo);

               }

      }     

那我就return列表

我创建了 EmployeeSearchPOJO class

我创建的列表是

List<EmployeeSearchPOJO> employeeList=new ArrayList<EmployeeSearchPOJO>();

public void setEmployeeList(List<EmployeeSearchPOJO> employeeList) {
    this.employeeList = employeeList;
}

public List<EmployeeSearchPOJO> getEmployeeList() {
    return employeeList;
}

这就是我使用 GSON 的方式。

Gson gson = new Gson();
String json = myJsonString;
Type type = new TypeToken<ArrayList<MyClass>>(){}.getType();
myList= gson.fromJson(json, type);

第一步

创建一个 table,列为 ENO,ENAME,EJOB

第二步

创建一个带有响应变量的 POJO Class。生成 getset 方法。

第 3 步

解析 json 响应并将其存储到数据库中。(这将提高性能)

第四步

创建一个class作为datacontroll并创建一个pojoclass类型的arraylist。 为数组列表生成 get and set 方法。 在 set 方法中使用 providerChangeSupport 。编写一个方法 return,它将从 database 中获取值并将结果(return类型为 list)存储到 setter 方法中 arraylist。从 dc class 的 constructor 调用方法。

第五步

最后右击 class 和 select CreateDataControll。然后从 jdeveloper 的应用程序 window 中,您可以在 Data Controlls 面板中看到 list

由于您的 JSONArray 包含具有三个属性的 JSONObject,您可以创建具有完全相同成员变量的 java class,例如

class Employee
{
    String ENO;
    String ENAME:
    String EJOB;

    //create getters ans setters
}

然后在您当前的代码中,添加以下导入:

import oracle.adfmf.framework.api.JSONBeanSerializationHelper;

在最后一个循环中你可以写:

 Employee emp=(Employee) JSONBeanSerializationHelper.fromJSON(Employee .class,js);
employeeList.add(emp);

现在您可以在 EmployeeSearchPOJO class 中设置 employeeList,然后使用它来创建数据控件。