programing

Android에서 JSON을 해석하려면 어떻게 해야 하나요?

testmans 2023. 2. 24. 13:21
반응형

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
    }
}
  1. 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;
    
        }
    }
    
  2. 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 항목을 반복하고 있습니다.아래는 의 인스턴스를 작성하는 것입니다.JSONParserclass 및 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

반응형