Почему я не могу создать объект JSON? - PullRequest
0 голосов
/ 19 октября 2011

Я использую HTTP Get для получения строки формата JSON с моего веб-сайта.

Однако, когда я пытаюсь создать JSONObject, ничего не происходит.Объект не создан, и я не могу получить доступ к массивам или к чему-либо внутри него.

Я проверил, что мое приложение получает правильную строку и правильно отформатировано в формате JSON.

Должен ли я объявить это каким-то особым образом или иметь отдельные блоки try / catch ...?

Я на этом разбираюсь, поэтому любая помощь будет наиболее ценной ...

Ниже у вас есть весь код, который я написал в этом выпуске, и хотя он немного, я застрял и не знаю, что с этим делать ...

public String result, testString;
public TextView resultText; 
public String url = "http://www.ace.ucv.ro/android/android.php";

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainmenu);

    resultText = (TextView) findViewById(R.id.result);

    try {
        HttpGet httpGet = new HttpGet(url);

        result = EntityUtils.toString(new DefaultHttpClient().execute(httpGet).getEntity());

        JSONObject jsonObject = new JSONObject(result);

    } catch (ParseException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (JSONException e) {
        e.printStackTrace();
    }           
    resultText.setText(result);

}

Ответы [ 3 ]

1 голос
/ 19 октября 2011

URL-адрес, указанный в коде (http://www.ace.ucv.ro/android/android.php), не возвращает объект Json, вместо этого это JSONArray.

Просто замените JSONObject на JSONArray, и все будет в порядке.

0 голосов
/ 19 октября 2011

На первый взгляд ваш код выглядит знакомым / разумным. Но, возможно, вам следует отложить его и записать промежуточные результаты, которые помогут вам понять, какая стадия идет не так. Например ...

HttpGet httpGet = new HttpGet(url);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(httpGet);
Log.v("test", "HTTP response = " + response);
HttpEntity entity = response.getEntity();
Log.v("test", "HTTP entity = " + entity);
String content = EntityUtils.toString(entity);
Log.v("test", "HTTP content = " + content);
JSONObject mJsonObj = new JSONObject(mContent);
0 голосов
/ 19 октября 2011

Вы уверены, что строка, хранящаяся в результате, является просто JSONObject или JSONArray?

Я помню, что наткнулся на похожую проблему.

...