我正在尝试为下面的 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
类。生成get
和set
方法。
步骤 3
解析json
响应并将其存储在数据库中。(这将创造性能)
步骤4
创建一个要充当datacontroll
的class
,并创建pojo
类类型的arraylist
。为数组列表生成get and set
方法。set
方法中使用providerChangeSupport
. 编写一个方法返回,它将从database
中获取值并将结果(returnType list
)存储在arraylist
的setter
方法中。从 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,然后使用它来创建数据控件。