このエラーを 2 日間修正しようとして、stackoverflow.com から複数のコーディング タイプを検索して試しました。JSON http://jsonformatter.curiousconcept.com/#jsonformatterを確認しました。しかし、私のコードがこれを行っている理由をまだ見つけることができません。私は3つのファイルを持っています。MainACtivity.java は、サーバー上の test.json ファイルから情報を取得し、それを Events.java に処理します。Events.java は情報を表示するだけで、アプリはそこまでは行いません。
他の誰かがこれを修正する必要がある場合に備えて、更新されたコード。
私のエラー:
01-14 22:18:08.165: E/JSON Response:(419): > { "event":[
01-14 22:18:08.165: E/JSON Response:(419): {
01-14 22:18:08.165: E/JSON Response:(419): "event_name":"Test Event",
01-14 22:18:08.165: E/JSON Response:(419): "event_time":"7:00pm",
01-14 22:18:08.165: E/JSON Response:(419): "event_price":"$15.00"
01-14 22:18:08.165: E/JSON Response:(419): }
01-14 22:18:08.165: E/JSON Response:(419): ]
01-14 22:18:08.165: E/JSON Response:(419): }
01-14 22:18:08.175: E/Json Error(419): Error: org.json.JSONException: Value [{"event_price":"$15.00","event_time":"7:00pm","event_name":"Test Event"}] at event of type org.json.JSONArray cannot be converted to JSONObject
MainActivity.java
package com.example.dba;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity
{
String event_name, event_time, event_price;
static JSONObject object =null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new PrefetchData().execute();
}
/**
* Async Task to make http call
*/
private class PrefetchData extends AsyncTask<Void, Void, Void>
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0)
{
JsonParser jsonParser = new JsonParser();
String json = jsonParser.getJSONFromUrl("http://www.website/test.json");
Log.e("JSON Response: ", "> " + json);
if (json != null)
{
try
{
JSONObject parent = new JSONObject(json);
JSONArray eventDetails = parent.getJSONArray("event");
for(int i=0; i < eventDetails.length(); i++)
{
object = eventDetails.getJSONObject(i);
event_name = object.getString("event_name");
event_time = object.getString("event_time");
event_price = object.getString("event_price");
Log.e("JSON", "> " + event_name + event_time + event_price );
}
} catch (JSONException e)
{
Log.e("Json Error", "Error: " + e.toString());
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
Intent i = new Intent(MainActivity.this, Events.class);
i.putExtra("event_name", event_name);
i.putExtra("event_time", event_time);
i.putExtra("event_price", event_price);
startActivity(i);
// close this activity
finish();
}
}
}
}