我是 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/