如何将 JSON 数组转换为列表以在 oracle MCS 中创建数据控制



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

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

这是数据控制程序此数据控件由另一个类调用

 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);
               }
      }     

然后我会返回列表

我创建了 EmployeeSearchPOJO 类

我创建的列表是

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

Step1

创建一个表,其中列作为ENO,ENAME,EJOB

步骤2

创建具有响应变量的POJO类。生成getset方法。

步骤 3

解析json响应并将其存储在数据库中。(这将创造性能)

步骤4

创建一个要充当datacontrollclass,并创建pojo类类型的arraylist。为数组列表生成get and set方法。set方法中使用providerChangeSupport . 编写一个方法返回,它将从database中获取值并将结果(returnType list)存储在arraylistsetter方法中。从 dc 类的constructor调用该方法。

步骤5

最后右键单击该类并选择 CreateDataControll .然后,从 jdeveloper 的应用程序窗口中,您可以在Data Controlls面板中看到list

这就是我使用 GSON 的方式。

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

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

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 类中设置 employeeList,然后使用它来创建数据控件。

最新更新