如何解析从php返回的数组到android中的String数组

时间:2013-05-19 10:18:28

标签: java php android

在Android中从PHP执行HTTP发布后,我收到以下响应。

new Array("1:Excellent","2:Good","3:Average","4:Not good","5:Disappointing")

我想将此结果解析为字符串数组,以便我可以使用这些值填充微调器。

3 个答案:

答案 0 :(得分:0)

我没有看到可以接受数组但可能检查Java String文档的字符串构造函数。您可以检查Array的大小,创建该大小的字符串数组,然后通过值的循环值手动将Array从Array复制到String数组。我不熟悉从Array对象复制,但似乎你会得到对象和类型转换为字符串。另外我不确定我在java集合中看到了Array,我使用了几种语言,所以如果你还没有设法将数据放到java对象中,那么这还不适用。

答案 1 :(得分:0)

您可以使用ScriptEngine将引擎设置为Javascript,您的代码不会在JS中引发任何错误。

No errors

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 +获得,您可以找到文档here。您可以在Android应用中添加javax.script,您可以找到该here

的来源

答案 2 :(得分:0)

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()方法中使用它