如何将 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。生成 get
和 set
方法。
第 3 步
解析 json
响应并将其存储到数据库中。(这将提高性能)
第四步
创建一个class
作为datacontroll
并创建一个pojo
class类型的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,然后使用它来创建数据控件。
我正在尝试为以下 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。生成 get
和 set
方法。
第 3 步
解析 json
响应并将其存储到数据库中。(这将提高性能)
第四步
创建一个class
作为datacontroll
并创建一个pojo
class类型的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,然后使用它来创建数据控件。