내 안드로이드 응용 프로그램에 JSON 데이터를 구문 분석하는 데 문제가 있습니다. 아래 나열된 JSON 객체를 구문 분석해야합니다. 내 응용 프로그램의 경우이 json 데이터를 배열에 저장하려고합니다. 텍스트보기 및 버튼을 사용하여 각 질문을 가능한 답변과 함께 표시하십시오. 그런 다음 배열에 다음 질문을 가능한 답과 함께 표시하려고합니다.안드로이드 JSON 개체를 구문 분석 저장할 때마다 변경 될 배열 목록에 저장
JSON 개체
{
"52f66c6eb82944cc1c00002a": {
"_id": {
"$id": "52f66c6eb82944cc1c00002a"
},
"Question": "Capital city of England",
"Answer 1": "Paris",
"Answer 2": "Liverpool",
"Correct Answer": "London"
},
"52f66c8ab82944780d000029": {
"_id": {
"$id": "52f66c8ab82944780d000029"
},
"Question": "Capital city of Ireland",
"Answer 1": "Cork",
"Answer 2": "Liverpool",
"Correct Answer": "Dublin"
}
}
내가 문자열 배열을 사용하지만 내 응용 프로그램에 대해 나는 mongohq 데이터베이스에서 인이 데이터를 표시하기 위해 필요한이 작업을 수행 할 수 있습니다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
protected TextView TitleTextView;
protected Button PossibleAnswer1;
protected Button PossibleAnswer2;
protected Button CorrectAnswer;
protected String URL ="http://127.0.0.1/mongo-form-create-quiz/processform.php";
protected HttpClient HTTPClient;
protected HttpPost HTTPPost;
protected HttpResponse ResponseFromWeb;
protected String JSONString;
protected JSONObject JSONObject;
protected String JSONQuestion;
protected String JSONPossibleAnswer1;
protected String JSONPossibleAnswer2;
protected String JSONCorrectAnswer;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppostresponse = new HttpPost("http://127.0.0.1/mongo-form-create-quiz/recordinput.php");
Intent openLastActivity = new Intent("com.example.quizqizzdemo.LASTACTIVITY");
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StrictMode.ThreadPolicy policy = new StrictMode.
ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.activity_main);
HTTPClient = new DefaultHttpClient();
HTTPPost = new HttpPost(URL);
TitleTextView = (TextView) findViewById(R.id.Question_Title);
PossibleAnswer1 = (Button) findViewById(R.id.PossibleAnswer1);
PossibleAnswer2 = (Button) findViewById(R.id.PossibleAnswer2);
CorrectAnswer = (Button) findViewById(R.id.CorrectAnswer);
try{
ResponseFromWeb = HTTPClient.execute(HTTPPost);
JSONString = FormatJSONInput(
ResponseFromWeb.getEntity().getContent()).toString();
JSONObject = new JSONObject(JSONString);
JSONQuestion = JSONObject.getString("Question");
JSONPossibleAnswer1 = JSONObject.getString("Answer 1");
JSONPossibleAnswer2 = JSONObject.getString("Answer 2");
JSONCorrectAnswer = JSONObject.getString("Correct Answer");
TitleTextView.setText(JSONQuestion);
PossibleAnswer1.setText(JSONPossibleAnswer1);
PossibleAnswer2.setText(JSONPossibleAnswer2);
CorrectAnswer.setText(JSONCorrectAnswer);
}
catch (JSONException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
PossibleAnswer1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
/*
Toast.makeText(getApplicationContext(),
"Incorrect!!", Toast.LENGTH_LONG).show();
PossibleAnswer1.setBackgroundColor(Color.RED);
*/
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("UserAnswer", JSONPossibleAnswer1));
nameValuePairs.add(new BasicNameValuePair("CorrectAnswer", JSONCorrectAnswer));
httppostresponse.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppostresponse);
startActivity(openLastActivity);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
});
PossibleAnswer2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
/*
Toast.makeText(getApplicationContext(),
"Incorrect!!", Toast.LENGTH_LONG).show();
PossibleAnswer1.setBackgroundColor(Color.RED);
*/
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("UserAnswer", JSONPossibleAnswer2));
nameValuePairs.add(new BasicNameValuePair("CorrectAnswer", JSONCorrectAnswer));
httppostresponse.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppostresponse);
startActivity(openLastActivity);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
});
CorrectAnswer.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
/*
Toast.makeText(getApplicationContext(),
"Correct!!", Toast.LENGTH_LONG).show();
CorrectAnswer.setBackgroundColor(Color.GREEN);
*/
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("UserAnswer", JSONCorrectAnswer));
nameValuePairs.add(new BasicNameValuePair("CorrectAnswer", JSONCorrectAnswer));
httppostresponse.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppostresponse);
startActivity(openLastActivity);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
});
}
private StringBuilder FormatJSONInput(InputStream is) {
String ReadLine = "";
StringBuilder CorrectDBData = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
try {
while ((ReadLine = rd.readLine()) != null) {
CorrectDBData.append(ReadLine);
}
}
catch (IOException e) {
e.printStackTrace();
}
return CorrectDBData;
}
}
안드로이드 코드입니다.
저는 학생이며 Android, json 및 mongodb를 처음 사용합니다.
이 전체 JSON이다에서 개체를 얻을 수 있습니다 다음 버튼을 누를 때 목록을 가지고 후에? –
예 json은 질문이 추가되면서 증가 할 PHP 웹 페이지에 표시됩니다. 저는 하나의 질문을 구문 분석하여 Android 응용 프로그램에 표시 할 수 있지만 버튼을 클릭 한 후 다음 질문을 표시해야합니다.이 json을 구문 분석 할 수 있다면 – peterodoherty92
데이터를 표시하는 데 문제가 있습니까? –