예제Json
{
"이름": "홍길동",
"나이": 25,
"성별": "남",
"결혼": true,
"취미": ["농구", "독서"],
"주소": "서울특별시 관악구 삼성동",
"가족": {"아버지": "홍미남", "어머니": "김미녀"}
}
Activity소스
package com.omnibuscode.myapplication;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends ActionBarActivity {
TextView textV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textV = (TextView) findViewById(R.id.tf);
new JsonLoadingTask().execute();
}
//데이터 가공
public String getJsonText() {
StringBuffer sb = new StringBuffer();
try{
String line = getStringFromUrl("http://www.androidside.com/book/data.json");
JSONObject object = new JSONObject(line);
sb.append("이름-").append(object.getString("이름")).append("\n");
sb.append("나이-").append(object.getInt("나이")).append("\n");
sb.append("성별-").append(object.getString("성별")).append("\n");
sb.append("결혼-").append(object.getBoolean("결혼")).append("\n");
//취미는 배열로 구성되어있으므로 Json배열 생성
sb.append("취미-");
JSONArray hobbyArray = new JSONArray(object.getString("취미"));
for(int i = 0; i<hobbyArray.length(); i++){
sb.append(hobbyArray.getString(i)).append(",");
}
sb.append("\n");
sb.append("주소-").append(object.getString("주소")).append("\n");
//가족 데이터는 내부 json이므로 json 객체 생성성
sb.append("가족-");
JSONObject familyObject = new JSONObject(object.getString("가족"));
sb.append(familyObject.getString("아버지")).append(",");
sb.append(familyObject.getString("어머니"));
// Log.e("TTT",object.getString("이름")+"");
}catch (JSONException e){
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
return sb.toString();
}
//데이터 저장
public String getStringFromUrl(String url) throws UnsupportedOperationException, UnsupportedEncodingException {
// 입력 스트림을 euc-kr를 사용해서 읽은 후 이를 사용해서
// 라인단위로 데이터를 읽을수 있는 BufferReader를 생성한다
BufferedReader br = new BufferedReader(new InputStreamReader(getInputStreamFromUrl(url),"UTF-8")); //(new InputStreamReader(url,"UTF-8"));
//읽은 데이터를 저장할 StringBuffer를 생성한다
StringBuffer sb = new StringBuffer();
try{
//라인 단위로 읽은 데이터를 임시 저장할 자열 변수
String line = null;
//라인 단위로 데이터를 읽어서 StringBuffer에 저장한다
while ((line = br.readLine()) != null){
sb.append(line);
Log.e("TTL",line);
}
}catch (IOException e){
e.printStackTrace();
}
return sb.toString();
}
//url 커넥션
public static InputStream getInputStreamFromUrl(String url){
InputStream contentStream = null;
try{
URL reauestURL = new URL(url);
HttpURLConnection conn = (HttpURLConnection) reauestURL.openConnection();
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
contentStream = conn.getInputStream();
}
}catch (Exception e){
e.printStackTrace();
}
return contentStream;
}
//결과 출력 onPostExecute 에서 ui접근
private class JsonLoadingTask extends AsyncTask<String, Void,String>{
@Override
protected String doInBackground(String... params) {
return getJsonText();
}
protected void onPostExecute(String result){
textV.setText(result);
}
}
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 이 게시판의 게시물들은 테스트 되지 않았음 | 황제낙엽 | 2019.08.28 | 445 |
5 | 안드로이드 API서버(API Server) | 황제낙엽 | 2019.03.24 | 862 |
4 |
화면회전(Orientation)에 따른 화면구성하기(레이아웃 분리) [2]
![]() | 황제낙엽 | 2018.12.05 | 73 |
3 | 화면회전(Orientation)에 따른 화면구성하기(레이아웃 분리) [1] | 황제낙엽 | 2018.12.05 | 76 |
2 | 공공데이터 JSON 파싱하기 (HttpURLConnection, JSON) | 황제낙엽 | 2018.10.25 | 1491 |
» | HttpURLConnection 을 이용하여 JSON데이터 읽어오는 샘플 | 황제낙엽 | 2018.10.25 | 144 |