一部の JSON を Android の個別のオブジェクトに解析しようとしています。オブジェクトは、空白なしの終了ブレースと開始ブレース (「最初の終わり {2 番目の開始」) で区切られます。これまでのところ、私のコードではこれらのポイントが JSON 内のどこにあるかを見つけることができますが、オブジェクトを分割して保存するためにどのメソッドを使用すればよいかわかりません。JSON を取得して解析を試みるコードは次のとおりです。
public ArrayList<String> getQuestionJSONFromUrl(String url, List<NameValuePair> params) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
ArrayList<String> questionsList = new ArrayList<String>();
int count = 0;
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
String newLine = null;
String newLine2 = null;
int previousJ = 0;
if ((line = reader.readLine()) != null) {
for(int j = 0; j < line.length(); j++) {
while (line.charAt(j) == '}' && line.charAt(j+1) == '{') {
//everything before j = 1 string
//everything after gets deleted because I can't think
//of anything better, yet
sb.append(line);
sb.delete(j+1, sb.length());
line = sb.toString();
questionsList.add(count, line);
//line = line.split("\\}\\{");
Log.v("forintbs", questionsList.toString());
count++;
}
}
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return null;
}
とにかく問題にならないので、明らかにメソッドは今のところ null を返しています。これまでのところ、ログを調べて出力を確認すると、arraylist は 1 つ長く、期待どおりに文字列を適切に取得していますが、残りの元のデータも期待どおりに削除されています。私が試したことを確認できるように、コードをそのまま残しました。誰か提案はありますか?サンプル JSON の一部を次に示します。
{"category":"elections","id":"0","title":"Who will you vote for in November's Presidential election?","published":"2012-04-02","enddate":"2012-04-30","responsetype":"0"}
{"category":"elections","id":"2","title":"Question title, ladies and gents","published":"2012-04-02","enddate":"2012-04-30","responsetype":"1"}
ArrayList を使用しなくても問題はありませんが、代わりに JSON オブジェクトの配列を使用します。昨日尋ねた質問で提案されているように、私は単に試しています。
編集〜ここに私のPHPスクリプトがあります:
<?php
define("DB_HOST", "localhost");
define("DB_USER", "*");
define("DB_PASSWORD", "*");
define("DB_DATABASE", "*");
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysql_select_db(DB_DATABASE);
$sql=mysql_query("select * from QUESTIONS where CATEGORY like 'elections'");
while($row=mysql_fetch_assoc($sql)) {
$output[]=$row;
}
foreach($output as $value) {
echo json_encode($value);
}
?>