在 Android 中从 PHP 执行 HTTP 发布后,我得到以下响应。
new Array("1:Excellent","2:Good","3:Average","4:Not good","5:Disappointing")
我想将此结果解析为字符串数组,以便可以用这些值填充微调器。
我没有看到可以采用数组的字符串构造函数,但可以查看 Java String 文档。您可以检查数组的大小,创建一个该大小的字符串数组,然后通过逐个循环值手动从数组复制到字符串数组。我对从 Array 对象进行复制并不熟悉,但看起来你会得到对象并将类型转换为字符串。另外我不确定我是否在 java 集合中看到了 Array,我使用了几种语言,所以如果你还没有设法将数据放入 java 对象中,但这还不适用。
您可以使用ScriptEngine
设置为 Javascript 的引擎,您的代码不会在 JS 中引发任何错误。
ScriptEngine js = new ScriptEngineManager().getEngineByName("JavaScript").getEngineByName("JavaScript");
String expression = ...; // Get the expression from the web server
String ss[] = (String[]) js.eval(expression);
ScriptEngine 可从 JDK6+ 获得,您可以在此处找到文档。您可以在您的 Android 应用程序中包含 javax.script,您可以在此处找到源代码
private void parseJson() {
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG)
.show();
}
// response to inputstream
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "UTF-8"));
sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG)
.show();
}
// to string
try {
JSONArray jArray = new JSONArray(result);
JSONObject json_data = null;
for (int i = 0; i < jArray.length(); i++) {
json_data = jArray.getJSONObject(i);
b.add(json_data.getString("Name"));
}
}
声明必要的变量!在 asynctask 的 doInBackGround() 方法中使用它