📝제이슨 데이터 파싱하기
JSON 데이터 파싱하기 = 제이슨으로 받아온 데이터를 꺼내와 사용하기
※ try 안에서 코드를 입력한다
+ 받아오는 정보가 오브젝트 { } 일때
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.GET, URL + "/posts/1", null,
// 성공했을때 받아온 데이터 처리하기
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// response에 데이터가 있으니 이 데이터를 Parsing 한다
try {
int userId = response.getInt("userId");
int id = response.getInt("id");
String title = response.getString("title");
String body = response.getString("body");
// 문제가 없다면 화면에 셋팅
// 화면 셋팅을 try 밖에서 할 경우 변수처리도 try 밖에서 해야한다
txtUserId.setText(userId+"");
txtId.setText(id+"");
txtTitle.setText(title);
txtBody.setText(body);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this,"파싱에러",Toast.LENGTH_SHORT).show();
return;
}
}
},
// 에러났을때 처리
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
queue.add(request);
+ 받아오는 정보가 어레이 리스트[] 일때
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
JsonArrayRequest request2 = new JsonArrayRequest(
Request.Method.GET, URL + "/posts", null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
// 데이터가 잘 왔는지 확인
Log.i("NETWORK_APP", response.toString());
// response에 데이터가 있으니 이 데이터를 Parsing 한다
try {
// 리스트의 첫번째 데이터 가져오기
JSONObject data = response.getJSONObject(0);
// 화면 셋팅
int userId = data.getInt("userId");
int id = data.getInt("id");
String title = data.getString("title");
String body = data.getString("body");
txtUserId.setText(userId+"");
txtId.setText(id+"");
txtTitle.setText(title);
txtBody.setText(body);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this,"파싱에러",Toast.LENGTH_SHORT).show();
return;
}
}
},
// 에러났을때 처리
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
queue.add(request2);
+ 받아오는 정보가 오브젝트안의 어레이 리스트 {[ ]} 일때 (반복문을 사용해준다)
public class MainActivity extends AppCompatActivity {
public final String URL = "주소";
RecyclerView recyclerView;
AlbumAdapter adapter;
ArrayList<Album> albumArrayList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.GET, URL + "/photos.json", null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray responseData = response.getJSONArray("data");
for ( int i = 0; i < responseData.length(); i++ ) {
JSONObject data = responseData.getJSONObject(i);
Album album = new Album(data.getInt("albumId"), data.getInt("id"), data.getString("title"), data.getString("url"), data.getString("thumbnailUrl"));
albumArrayList.add(album);
}
} catch (JSONException e) {
Toast.makeText(MainActivity.this,"에러발생",Toast.LENGTH_SHORT).show();
}
// 어댑터 연결해서 리사이클러뷰로 나타내기
adapter = new AlbumAdapter(MainActivity.this, albumArrayList);
recyclerView.setAdapter(adapter);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this,"서버에러발생",Toast.LENGTH_SHORT).show();
}
}
);
queue.add(request);
}
}
'Android Studio' 카테고리의 다른 글
[Android Studio] Floating Action Button 사용하기 (0) | 2023.02.06 |
---|---|
[Android Studio] ActionBar 아이콘 추가하기(Menu 사용하기) (0) | 2023.02.06 |
[Android Studio] 안드로이드 네트워크 통신 Volley 라이브러리 사용하기 (0) | 2023.02.03 |
[Android Studio] 안드로이드 네트워크 통신을 위해 앱의 권한 설정하기(+에뮬레이터용 네트워크 통신) (0) | 2023.02.03 |
[Android Studio] xml 화면구성 visibility로 아이콘 숨기기 (0) | 2023.02.03 |
댓글