我想问你是否知道显示来自WebService的数据(可能是表格格式)的实用方法。
我是j2me的新手,我刚刚学会了如何使用RESTful webservices,现在我需要学习如何向用户显示数据(以json格式显示)。
基本上这是我使用的代码:
protected String jsonParse(String url) {
StringBuffer stringBuffer = new StringBuffer();
InputStream is = null;
HttpConnection hc = null;
System.out.println(url);
String Results = null;
try {
mProgressString.setText("Connecting...");
hc = (HttpConnection) Connector.open(url, Connector.READ);
hc.setRequestMethod(HttpConnection.GET);
hc.setRequestProperty("User-Agent", "Profile/MIDP-2.1 Configuration/CLDC-1.1");
if (hc.getResponseCode() == HttpConnection.HTTP_OK) {
is = hc.openInputStream();
int ch;
while ((ch = is.read()) != -1) {
stringBuffer.append((char) ch);
}
}
} catch (SecurityException se) {
System.out.println("Security Excepction: " + se);
} catch (NullPointerException npe) {
System.out.println("Null Pointer Excepction: " + npe);
} catch (IOException ioe) {
System.out.println("IO Exception" + ioe);
}
try {
hc.close();
is.close();
} catch (Exception e) {
System.out.println("Error in MostActivePareser Connection close:" + e);
e.printStackTrace();
}
String jsonData = stringBuffer.toString();
try {
JSONArray js = new JSONArray(jsonData);
System.out.println(js.length());
mProgressString.setText("Reading...");
String Results = "";
for (int i = 0; i < js.length(); i++) {
JSONObject jsObj = js.getJSONObject(i);
Results += "-----------------------------------\n";
Results += jsObj.getString("Name") + " \n";
Results += jsObj.getString("Phone") + " \n";
Results += jsObj.getString("Address");
}
} catch (JSONException e1) {
System.out.println("Json Data error:" + e1);
e1.printStackTrace();
} catch (NullPointerException e) {
System.out.println("null error:" + e);
}
return Results;
}
正如你所看到的,我只是将结果连接起来然后显示给用户。但是肯定有更好的方法,这就是我需要你帮助的地方。
你如何在j2me中显示一个典型的json数组?当你需要处理大量的结果时,你如何处理有限的内存和小屏幕尺寸等限制?
与往常一样,您可以提供的任何建议或资源都将受到高度赞赏。
提前致谢。
P.S。 This is the jar我曾经和json一起工作。
答案 0 :(得分:0)
这个link肯定会帮助你处理JSONArray。
谈到内存限制,你只是尝试清理你不再需要关于UI的资源/数据结构,只需保持当前屏幕的实例(如果可能),不需要堆栈中的其他实例。如果您的数组包含许多一次无法显示的对象(因为可能会导致OOM出现问题),那么您可以考虑分页。
您可以更好地了解内存优化,必须参阅presentation。