Android에서 JSON을 해석하려면 어떻게 해야 하나요?
Android에서 JSON 피드를 해석하려면 어떻게 해야 합니까?
Android에는 json을 해석하는 데 필요한 모든 도구가 내장되어 있습니다.예를 들어 GSON 같은 것은 필요 없습니다.
JSON 취득:
json 문자열이 있다고 가정합니다.
String result = "{\"someKey\":\"someValue\"}";
JSONObject를 만듭니다.
JSONObject jObject = new JSONObject(result);
json 문자열이 배열인 경우:
String result = "[{\"someKey\":\"someValue\"}]"
그럼 다음 명령을 사용합니다.JSONArray
이하에 나타내는 바와 같이JSONObject
특정 문자열을 가져오려면
String aJsonString = jObject.getString("STRINGNAME");
특정 부울을 가져오려면
boolean aJsonBoolean = jObject.getBoolean("BOOLEANNAME");
특정 정수를 가져오려면
int aJsonInteger = jObject.getInt("INTEGERNAME");
특정 길이를 얻으려면
long aJsonLong = jObject.getLong("LONGNAME");
특정 더블을 얻으려면
double aJsonDouble = jObject.getDouble("DOUBLENAME");
특정 JSONArray를 가져오려면:
JSONArray jArray = jObject.getJSONArray("ARRAYNAME");
배열에서 항목을 가져오려면
for (int i=0; i < jArray.length(); i++)
{
try {
JSONObject oneObject = jArray.getJSONObject(i);
// Pulling items from the array
String oneObjectsItem = oneObject.getString("STRINGNAMEinTHEarray");
String oneObjectsItem2 = oneObject.getString("anotherSTRINGNAMEINtheARRAY");
} catch (JSONException e) {
// Oops
}
}
JSON 파서 클래스 쓰기
public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() {} public JSONObject getJSONFromUrl(String url) { // Making HTTP request try { // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); 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 { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } 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 jObj; } }
JSON 데이터 해석
파서 클래스를 만들고 나면 그 클래스의 사용법을 알아야 합니다.여기에서는 파서 클래스를 사용하여 json(이 예에서는 취득)을 해석하는 방법에 대해 설명합니다.2.1. 이 모든 노드 이름을 변수에 저장합니다.연락처 json에는 이름, 이메일, 주소, 성별, 전화번호 등의 항목이 있습니다.따라서 먼저 모든 노드 이름을 변수에 저장합니다.메인 액티비티 클래스를 열고 모든 노드 이름을 정적 변수에 저장함을 선언합니다.
// url to make request private static String url = "http://api.9android.net/contacts"; // JSON Node names private static final String TAG_CONTACTS = "contacts"; private static final String TAG_ID = "id"; private static final String TAG_NAME = "name"; private static final String TAG_EMAIL = "email"; private static final String TAG_ADDRESS = "address"; private static final String TAG_GENDER = "gender"; private static final String TAG_PHONE = "phone"; private static final String TAG_PHONE_MOBILE = "mobile"; private static final String TAG_PHONE_HOME = "home"; private static final String TAG_PHONE_OFFICE = "office"; // contacts JSONArray JSONArray contacts = null;
2.2. 파서 클래스를 사용하여
JSONObject
각 json 항목을 반복하고 있습니다.아래는 의 인스턴스를 작성하는 것입니다.JSONParser
class 및 for loop을 사용하여 각 json 항목을 루프하고 마지막으로 각 json 데이터를 변수에 저장합니다.// Creating JSON Parser instance JSONParser jParser = new JSONParser(); // getting JSON string from URL JSONObject json = jParser.getJSONFromUrl(url); try { // Getting Array of Contacts contacts = json.getJSONArray(TAG_CONTACTS); // looping through All Contacts for(int i = 0; i < contacts.length(); i++){ JSONObject c = contacts.getJSONObject(i); // Storing each json item in variable String id = c.getString(TAG_ID); String name = c.getString(TAG_NAME); String email = c.getString(TAG_EMAIL); String address = c.getString(TAG_ADDRESS); String gender = c.getString(TAG_GENDER); // Phone number is agin JSON Object JSONObject phone = c.getJSONObject(TAG_PHONE); String mobile = phone.getString(TAG_PHONE_MOBILE); String home = phone.getString(TAG_PHONE_HOME); String office = phone.getString(TAG_PHONE_OFFICE); } } catch (JSONException e) { e.printStackTrace(); }
간단한 예시를 코드화하고 출처에 주석을 달았습니다.다음 예시는 라이브 json을 가져와 해석하는 방법을 보여 줍니다.JSONObject
상세 추출:
try{
// Create a new HTTP Client
DefaultHttpClient defaultClient = new DefaultHttpClient();
// Setup the get request
HttpGet httpGetRequest = new HttpGet("http://example.json");
// Execute the request in the client
HttpResponse httpResponse = defaultClient.execute(httpGetRequest);
// Grab the response
BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8"));
String json = reader.readLine();
// Instantiate a JSON object from the request response
JSONObject jsonObject = new JSONObject(json);
} catch(Exception e){
// In your production code handle any errors and catch the individual exceptions
e.printStackTrace();
}
그 후,JSONObject
필요한 데이터를 추출하는 방법에 대한 자세한 내용은 SDK를 참조하십시오.
언급URL : https://stackoverflow.com/questions/9605913/how-do-i-parse-json-in-android
'programing' 카테고리의 다른 글
워드프레스의 커스텀 포스트 타입에 발췌를 추가하는 방법 (0) | 2023.02.24 |
---|---|
Woocommerce에서 프로그래밍 방식으로 새 순서 만들기 (0) | 2023.02.24 |
Spring Pageable 인터페이스용 Swagger 문서 (0) | 2023.02.24 |
Wordpress API v2에 대한 필드를 지정하는 방법 (0) | 2023.02.24 |
Angular HttpClient "해석 중 Http 오류" (0) | 2023.02.24 |