마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

json 형태 변화 질문

0 추천

서버와 소켓통신으로 데이터를 받아옵니다. 

그 데이터는 

{"d_name":"aaa","d_id":"111","ip":"127.0.0.1", ... }

{"d_name":"bbb","d_id":"222","ip":"192.0.0.0", ... }

{"d_name":"aaa","d_id":"111","ip":"127.0.0.1", ... }

{"d_name":"aaa","d_id":"111","ip":"127.0.0.1", ... }

이런 json 형태로 하나씩 넘어와서 string 으로 받아서 arraylist 에 add 시켰습니다.

그리고 그걸 HashSet 으로 중복 체크하고 다시 json 으로 받아서 파싱하여 

최종 데이터를 Listview 에 뿌려야 합니다.

문제는 최종 데이터를 Json 으로 파싱하려고 보면

["{\"d_name\":\"aaa\",\"d_id\":\"111\",\"ip\":\"127.0.0.1\",...}","{\"d_name\":\"bbb\",\"d_id\":\"222\",\"ip_address\":\"192.0.0.0\",.....}"

이런식으로 넘어와서 파싱이 안되고 있습니다.

하루종일 찾아봐도 도무지 모르겠네요,,, 조언좀 부탁드립니다. ㅠㅠ

 

private ArrayList<String> arr = null;

// 소켓통신으로 받아오는 데이터 add
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
String str = new String(packet.getData(), 0, packet.getLength());

if(str.length() > 0) {
	arr.add(s);
}
....


// 중복제거
HashSet hashSet = new HashSet(mArr);
ArrayList ar = new ArrayList(hashSet);
Collections.sort(ar);
testP(ar);
...

// 
private boolean testP(ArrayList<String> ar){
try{
   JSONArray ja = new JSONArray(ar);
   
   for(int i = 0; i < ja.length(); i++){
//     JSONObject object_ = (JSONObject) ja.get(i);
//   JSONObject object_ = ja.getJSONObject(i);
// 둘다 안됩니다. ㅠㅠ 여기를 어케 처리해야할까요??

    // Log.d(TAG, "d_name :: "+object_.get("d_name"));

   }

} catch(JSONException e){

}

방법론이나 힌트라도 부탁드릴께요

감사합니다.

익명사용자 님이 2015년 11월 23일 질문

2개의 답변

0 추천
// Remove escape characters
String result = json_str.replace( "\\", "" );
익명사용자 님이 2015년 11월 23일 답변
0 추천
처음에 올려주신 형태는 클래스가 JSON으로 변환된 형태고, 최종이라고 되어 있는 형태는 맨 앞의 클래스의 리스트 형태네요.

먼저 답변을 주신 분 말씀처럼 하는 게 현재 구조에서는 간편할 것 같습니다. [,] 같은 것들도 없애줘야겠지요.

그게 아니라면 아예 처음부터 fastxml.jackson이나 Gson같은 걸로 변환을 하시면 클래스로 갖고 와도, 클래스의 리스트로 갖고 와도 편할 것 같습니다. 일일이 저렇게 변환하는 건 효율적이진 않아 보입니다.
cc1232 (35,280 포인트) 님이 2015년 11월 24일 답변
...