问题
Iam trying to create a List View for the below Json code
{"ImageList" :[
{
"ENO":"87",
"ENAME" : "john",
"EJOB":"clerk",
},{
"ENO":"21",
"ENAME" : "Abdul",
"EJOB":"Manager",
} ]
}
This the DataControl Program This DataControl is invoked by another 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);
}
}
Then I will return the List
I have created EmployeeSearchPOJO class
List I have created is
List<EmployeeSearchPOJO> employeeList=new ArrayList<EmployeeSearchPOJO>();
public void setEmployeeList(List<EmployeeSearchPOJO> employeeList) {
this.employeeList = employeeList;
}
public List<EmployeeSearchPOJO> getEmployeeList() {
return employeeList;
}
回答1:
Step1
create a table with columns as ENO,ENAME,EJOB
.
Step2
Create a POJO
Class with response variables. Generate get
and set
methods.
Step 3
Parse the json
response and store it in to database.(This will increate the performance)
Step4
Create a class
which is to be acts as datacontroll
and create an arraylist
of the type of pojo
class.
Generate get and set
methods for the arraylist.
In set
method use providerChangeSupport
. Write a method return which will fetch the values from the database
and store the result (returnType is list
) in to the setter
method of the arraylist
. Call the method from the constructor
of the dc class.
Step5
Finally right click on the class and select CreateDataControll
. Thenn from the application window of jdeveloper you can see the list
in the Data Controlls
panel.
回答2:
This is how I did it using GSON.
Gson gson = new Gson();
String json = myJsonString;
Type type = new TypeToken<ArrayList<MyClass>>(){}.getType();
myList= gson.fromJson(json, type);
回答3:
Since your JSONArray contains JSONObject with three attributes,you can create a java class with the exact same member variables i.e. for example
class Employee
{
String ENO;
String ENAME:
String EJOB;
//create getters ans setters
}
Then within your current code,add the following import:
import oracle.adfmf.framework.api.JSONBeanSerializationHelper;
and in the last loop you can write:
Employee emp=(Employee) JSONBeanSerializationHelper.fromJSON(Employee .class,js);
employeeList.add(emp);
Now you can set employeeList in EmployeeSearchPOJO class and then use it to create the Data Control.
来源:https://stackoverflow.com/questions/36767439/how-to-convert-the-json-array-to-list-to-create-datacontrol-in-oracle-mcs