java - 在 json 解析过程中,字符 0 处的输入结束错误

标签 java android

我是 android 的新手,所以当我尝试使用以下代码解析从 mysql 数据库获取的 json 时发生了什么:

public ParseJSON(String json){
        this.json = json;
    }

    protected void parseJSON(){
        JSONObject jsonObject=null;
        try {
            jsonObject = new JSONObject(json);




            users = jsonObject.getJSONArray(JSON_ARRAY);

            //ids = new String[users.length()];
            names = new String[users.length()];
            message = new String[users.length()];

            for(int i=0;i<users.length();i++){
                JSONObject jo = users.getJSONObject(i);
               // ids[i] = jo.getString(KEY_ID);
                names[i] = jo.getString(KEY_NAME);
                message[i] = jo.getString(KEY_EMAIL);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

我收到以下错误,如下所述:

错误:

04-24 20:01:44.969 13858-13858/? W/System.err: org.json.JSONException: End of input at character 0 of 
04-24 20:01:44.969 13858-13858/? W/System.err:     at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
04-24 20:01:44.969 13858-13858/? W/System.err:     at org.json.JSONTokener.nextValue(JSONTokener.java:97)
04-24 20:01:44.969 13858-13858/? W/System.err:     at org.json.JSONObject.<init>(JSONObject.java:154)
04-24 20:01:44.979 13858-13858/? W/System.err:     at org.json.JSONObject.<init>(JSONObject.java:171)
04-24 20:01:44.979 13858-13858/? W/System.err:     at com.weavearound.schools.weavearound.ParseJSON.parseJSON(ParseJSON.java:31)
04-24 20:01:44.979 13858-13858/? W/System.err:     at com.weavearound.schools.weavearound.list_view.showJSON(list_view.java:75)
04-24 20:01:44.979 13858-13858/? W/System.err:     at com.weavearound.schools.weavearound.list_view.access$000(list_view.java:22)
04-24 20:01:44.979 13858-13858/? W/System.err:     at com.weavearound.schools.weavearound.list_view$1.onResponse(list_view.java:50)
04-24 20:01:44.979 13858-13858/? W/System.err:     at com.weavearound.schools.weavearound.list_view$1.onResponse(list_view.java:44)
04-24 20:01:44.979 13858-13858/? W/System.err:     at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:67)
04-24 20:01:44.979 13858-13858/? W/System.err:     at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
04-24 20:01:44.979 13858-13858/? W/System.err:     at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
04-24 20:01:44.979 13858-13858/? W/System.err:     at android.os.Handler.handleCallback(Handler.java:605)
04-24 20:01:44.979 13858-13858/? W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:92)
04-24 20:01:44.979 13858-13858/? W/System.err:     at android.os.Looper.loop(Looper.java:137)
04-24 20:01:44.979 13858-13858/? W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:4517)
04-24 20:01:44.979 13858-13858/? W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
04-24 20:01:44.989 13858-13858/? W/System.err:     at java.lang.reflect.Method.invoke(Method.java:511)
04-24 20:01:44.989 13858-13858/? W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
04-24 20:01:44.989 13858-13858/? W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
04-24 20:01:44.989 13858-13858/? W/System.err:     at dalvik.system.NativeStart.main(Native Method)

我获取数据的 ListView

public class list_view extends AppCompatActivity implements View.OnClickListener {

    public static final String JSON_URL = "http://www.schools.weavearound.com/chatdb_api/showback.php";

    private Button buttonGet;

    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_viewall);

        buttonGet = (Button) findViewById(R.id.buttonGet);
        buttonGet.setOnClickListener(this);
        listView = (ListView) findViewById(R.id.listView);
    }

    private void sendRequest(){


        StringRequest stringRequest = new StringRequest(JSON_URL,
                new Response.Listener<String>() {



                    @Override
                    public void onResponse(String response) {
                        showJSON(response);
                    }
                },


                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(list_view.this,error.getMessage(),Toast.LENGTH_LONG).show();
                    }
                });

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }




    private void showJSON(String json){

        final String TAG = events.class.getSimpleName();
        Log.d(TAG, "showJSON: \n" + json);

        ParseJSON pj = new ParseJSON(json);
        pj.parseJSON();
        CustomList cl = new CustomList(this,ParseJSON.names,ParseJSON.message);
        listView.setAdapter(cl);
    }

    @Override
    public void onClick(View v) {
        sendRequest();
    }
}

最佳答案

在我看来,你实际上是以不同的方式定义事物,如果你正在做解析,那么请将每个 jsonObject 或 JsonArray 作为本地。 看到我正在为您提供代码:

try {
           JsonObject jsonObject = new JSONObject(json);

           JsonArray users = jsonObject.getJSONArray(JSON_ARRAY);

            for(int i=0;i<users.length();i++){
                JSONObject jo = users.getJSONObject(i);
                String name = jo.getString(KEY_NAME);
                String message = jo.getString(KEY_EMAIL);


            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

请在您的代码中应用,让我知道它会起作用。

关于java - 在 json 解析过程中,字符 0 处的输入结束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36828437/

相关文章:

android - 想在 Cocos2d 中为我的 SDK 创建一个插件

android - 无法解析方法 Placepicker.getPlace(上下文、 Intent )

android - 当子 ViewPager 在最后一项时,如何防止父 ViewPager 滚动?

java - 为什么我在某些值上收到 "number stored as text"错误?

java - FileInputStream 和 FileOutputStream 逐行

java - 如何使用java中的正则表达式从字符串中获取日期?

android - 无法确定任务 ':app:lintVitalRelease' 的依赖关系。无法生成已签名的 APK

android - 任何人都可以从 Hello Android 书中解释这段代码吗

Java Map - 在 getOrDefault 中找不到 key 时的日志消息

java - 为什么新建的Jhipster项目body height=0?