티스토리 뷰

 프로젝트 진행을 하면서 지나온 mappoints, 여러 좌표들을 DB 에 저장해야 되는 상황이 생겨 데이터들을 넣고 JSON 으로 binding 과 parsing 하는 기능을 구현하게 됬습니다. 


 

소스코드

소스 코드는 아래와 같습니다.


 binding의 경우 ArrayList 에 들어 있는 LatLng 객체의 lat과 lng 를 구해서 각각의 JSONObject에 넣어준뒤 이들을 JSONArray에 넣어주는 형식입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class JSONManager {
    public static String bindJSON(ArrayList<com.google.android.gms.maps.model.LatLng> list){
        JSONArray jsonArray = new JSONArray();
        for(int i = 0; i < list.size(); i++){
            JSONObject latJson = new JSONObject();
            JSONObject lngJson = new JSONObject();
            try{
                latJson.put("lat", list.get(i).latitude);
                lngJson.put("lng", list.get(i).longitude);
            }catch (JSONException e){
                e.printStackTrace();
            }
            jsonArray.put(latJson);
            jsonArray.put(lngJson);
        }
        return jsonArray.toString();
    }
    public static ArrayList<com.google.android.gms.maps.model.LatLng> parseJSON(String data){
        ArrayList<com.google.android.gms.maps.model.LatLng> list = new ArrayList<>();
        try{
            JSONArray jsonArray = new JSONArray(data);
            for(int i = 0; i < jsonArray.length(); i+=2){
                JSONObject latObject = jsonArray.getJSONObject(i);
                JSONObject lngObject = jsonArray.getJSONObject(i + 1);
                com.google.android.gms.maps.model.LatLng latLng =
                        new com.google.android.gms.maps.model.LatLng(Double.parseDouble(latObject.get("lat").toString()), Double.parseDouble(lngObject.get("lng").toString()));
                list.add(latLng);
            }
        }catch (JSONException e){
            e.printStackTrace();
        }
        return list;
    }
}
cs


반응형
댓글