【问题标题】:reading JSON via webservice android通过 webservice android 读取 JSON
【发布时间】:2014-09-27 00:14:00
【问题描述】:

我尝试开发一个Android应用web服务返回一个json文件,例如:

{“成功”:1,“消息”:“发布 可用!","posts":[{"post_id":"1","username":"hasni","title":"tire","message":"this 是我的消息"},{"post_id":"2","username":"user2","title":"tire 2","message":"这是我的消息 2"},{"post_id":"3","username":"123","title":"12","message":"111"},{"post_id":"4","username" :"1212","title":"1212","message":"1212"},{"post_id":"5","username":"1212","title":"bonjour","message" :“瞧 ce message qui vient d'une session "},{"post_id":"6","username":"121212","title":"tire","message":"message"}]}

这是读取此 JSON 的部分代码:

        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("receiver", strSender));
        JSONObject json = jsonParser.makeHttpRequest(
                LOGIN_URL, "POST", params);
        success = json.getInt(TAG_SUCCESS);

        Log.d("ok", "ok");

        if (success == 1){

            messagesArray = (JSONArray)json.getJSONArray(TAG_POSTS);
            for (int i= 0;i <messagesArray.length();i++){
                Log.d("iteration", "iteration" + i);
                JSONObject messageJson = messagesArray.getJSONObject(i);
                Log.d("post_id","post_id: "+i+ " "+ messageJson.getString(TAG_POSTS_ID) );
                Log.d("username","username: " +i+" " + messageJson.getString(TAG_POSTS_USERNAME));
                Log.d("title", "title: " +i+ " " + messageJson.getString(TAG_POSTS_ID_TITLE));
                Log.d("message","message: "+i+" "+ messageJson.getString(TAG_POSTS_ID_MESSAGE));
            }

        }else{
            Log.d("failed", "!!!!!!!!!!!!!!!!!!!!!!!!");
        }

但我有一个问题:应用程序崩溃并退出。这是日志猫:

09-27 23:15:37.119: W/System.err(489): org.json.JSONException: 否 帖子值 09-27 23:15:37.119: W/System.err(489): at org.json.JSONObject.get(JSONObject.java:354) 09-27 23:15:37.128: W / System.err(489):在 org.json.JSONObject.getJSONArray(JSONObject.java:544) 09-27 23:15:37.128:W / System.err(489):在 com.example.mysql.ReadMessages.onCreate(ReadMessages.java:73) 09-27 23:15:37.128:W / System.err(489):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-27 23:15:37.128: W/System.err(489): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 09-27 23:15:37.128: W/System.err(489): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 09-27 23:15:37.128: W/System.err(489): 在 android.app.ActivityThread.access$1500(ActivityThread.java:117) 09-27 23:15:37.128:W / System.err(489):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 09-27 23:15:37.138: W/System.err(489): 在 android.os.Handler.dispatchMessage(Handler.java:99) 09-27 23:15:37.138:W / System.err(489):在 android.os.Looper.loop(Looper.java:123) 09-27 23:15:37.138: W / System.err(489):在 android.app.ActivityThread.main(ActivityThread.java:3683) 09-27 23:15:37.138:W / System.err(489):在 java.lang.reflect.Method.invokeNative(Native Method) 09-27 23:15:37.138:W / System.err(489):在 java.lang.reflect.Method.invoke(Method.java:507) 09-27 23:15:37.138: W / System.err(489):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 09-27 23:15:37.138: W/System.err(489): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 09-27 23:15:37.138:W / System.err(489):在 dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 你能打印Android收到的json吗?尝试在success = json.getInt(TAG_SUCCESS); 下方编写Log.d("json", json.toString()); 并判断收到的json 结构是否如您所愿。

标签: java android json webservice-client arrays


【解决方案1】:

我用这种方式试过你的代码,

    private void jsonTest() {
    try {
        String jsonString = "{\"success\":1,\"message\":\"Post Available!\",\"posts\":[{\"post_id\":\"1\",\"username\":\"hasni\",\"title\":\"titre\",\"message\":\"this is my message\"},{\"post_id\":\"2\",\"username\":\"user2\",\"title\":\"titre 2\",\"message\":\"this is my message 2\"},{\"post_id\":\"3\",\"username\":\"123\",\"title\":\"12\",\"message\":\"111\"},{\"post_id\":\"4\",\"username\":\"1212\",\"title\":\"1212\",\"message\":\"1212\"},{\"post_id\":\"5\",\"username\":\"1212\",\"title\":\"bonjour\",\"message\":\"voila ce message qui vient d'une session \"},{\"post_id\":\"6\",\"username\":\"121212\",\"title\":\"titre\",\"message\":\"message\"}]}";

        Log.i(TAG, "jsonString = " + jsonString);
        JSONObject json = new JSONObject(jsonString);
        int success = json.getInt("success");

        Log.d("ok", "ok");

        if (success == 1) {

            JSONArray messagesArray = (JSONArray) json
                    .getJSONArray("posts");
            for (int i = 0; i < messagesArray.length(); i++) {
                Log.d("iteration", "iteration" + i);
                JSONObject messageJson = messagesArray.getJSONObject(i);
                Log.d("post_id",
                        "post_id: " + i + " "
                                + messageJson.getString("post_id"));
                Log.d("username",
                        "username: " + i + " "
                                + messageJson.getString("username"));
                Log.d("title",
                        "title: " + i + " "
                                + messageJson.getString("title"));
                Log.d("message",
                        "message: " + i + " "
                                + messageJson.getString("message"));
            }

        } else {
            Log.d("failed", "!!!!!!!!!!!!!!!!!!!!!!!!");
        }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
}

并且工作正常,您定义的 TAG 可能有问题。

【讨论】:

  • 我在 json 解析器中有问题
猜你喜欢
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-03
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
相关资源
最近更新 更多