일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- mariadb
- centOS7
- server
- C lanuage
- php
- caddy
- C
- 안드로이드
- 번역
- it
- H2O
- 해석
- 프래그먼트
- 구글
- techEmpower
- 개발
- javascript
- ubuntu
- android
- unity
- error
- Portfolio
- MySQL
- 자바
- kakao
- NGINX
- java
- 컴퓨터과학총론
- 한글
- 개발자
- Today
- Total
개발모음집
Json으로 데이터를 주고 받을 때 JSON에 불필요한 데이터가 삽입된 경우 본문
W/System.err: org.json.JSONException: Value 4 at 4 of type java.lang.Integer cannot be converted to JSONObject
안드로이드에서 PHP로 데이터를 보내면 PHP에서 db의 데이터를 읽어와 array에 넣고, json형식으로 파싱하여 안드로이드에 전송하였다.
I/jsonArray: [{"friend_no":"13"},{"user_no":"3"},{"add_from_friend":"레이나"},{"add_to_friend":"사나"},4]
I/jsonArray: [{"friend_no":"13"},{"user_no":"3"},{"add_from_friend":"레이나"},{"add_to_friend":"사나"},4,{"friend_no":"15"},{"user_no":"3"},{"add_from_friend":"레이나"},{"add_to_friend":"아이유"},9]
W/System.err: org.json.JSONException: Value 4 at 4 of type java.lang.Integer cannot be converted to JSONObject
하지만 jsonArray 마다 내가 넣으려고 하지 않았던 4나 9같은 숫자가 포함되어 있었다.
그래서 클라이언트(디바이스)에서 Json파싱을 했을 때 위와 같은 에러가 났고, 차근차근 찾아보니 PHP 파일에서 DB에 있는 데이터를 json으로 만들어줄 때 잘못하였다.
1. 수정전 PHP 파일
if (!empty($result)) {// 결과값이 있을 때 if문안의 코드를 실행한다.
$data = array();
// allnight.friend_schema.friend_tb 에서 읽어온 친구목록을 array에 넣기
if ($result) {
while ($row = pg_fetch_array($result, null, PGSQL_ASSOC)) {
$data[] = array_push($data,
array('friend_no' => $row['friend_no']),
array('user_no' => $row['user_no']),
array('add_from_friend' => $row['add_from_friend']),
array('add_to_friend' => $row['add_to_friend'])
);
//JSON_PRETTY_PRINT: 줄나눔해서 보기 좋게 보여주기위한 설정변수, JSON_UNESCAPED_UNICODE : 사람이 이해하기 어려운 문자를 사람이 볼 수 있는 텍스트로 변환해주는 변수
$json = json_encode(array("FriendListData" => $data), JSON_PRETTY_PRINT + JSON_UNESCAPED_UNICODE);
echo $json;
}
}
}
while문 밖에 있는 $data= array();의 $data 변수와 while문 안에 있는 $data[]가 있는 걸 확인했고, $data 변수를 json encoding하는 것을 확인했다.
data 변수가 중복되어 $data가 아닌 $data[] 가 json으로 인코딩 되는 것 같아서 $data[] 변수를 지웠더니 아래와 같이 내가 넣은 데이터만 나오는 것을 확인할 수 있었다.
I/jsonArray: [{"friend_no":"13"},{"user_no":"3"},{"add_from_friend":"레이나"},{"add_to_friend":"사나"}]
I/jsonArray: [{"friend_no":"13"},{"user_no":"3"},{"add_from_friend":"레이나"},{"add_to_friend":"사나"},{"friend_no":"15"},{"user_no":"3"},{"add_from_friend":"레이나"},{"add_to_friend":"아이유"}]
2. 수정 후 PHP 파일
if (!empty($result)) {// 결과값이 있을 때 if문안의 코드를 실행한다.
$data = array();
// allnight.friend_schema.friend_tb 에서 읽어온 친구목록을 array에 넣기
if ($result) {
while ($row = pg_fetch_array($result, null, PGSQL_ASSOC)) {
array_push($data,
array('friend_no' => $row['friend_no']),
array('user_no' => $row['user_no']),
array('add_from_friend' => $row['add_from_friend']),
array('add_to_friend' => $row['add_to_friend'])
);
//JSON_PRETTY_PRINT: 줄나눔해서 보기 좋게 보여주기위한 설정변수, JSON_UNESCAPED_UNICODE : 사람이 이해하기 어려운 문자를 사람이 볼 수 있는 텍스트로 변환해주는 변수
$json = json_encode(array("FriendListData" => $data), JSON_PRETTY_PRINT + JSON_UNESCAPED_UNICODE);
echo $json;
}
}
}
'TheRestDevelop' 카테고리의 다른 글
sprite 타일화 (0) | 2018.05.25 |
---|---|
Cannot implicitly convert type `UnityEngine.Animator[]' to `UnityEngine.Animator' (0) | 2018.05.24 |
php 나온 이유, 동작원리, php5.x 와 php 7 차이 (0) | 2017.10.23 |
안드로이드에서 크기가 큰 파일이 서버에 저장되지 않을 때 (0) | 2017.08.10 |
php에서 mysql에 현재 시간 넣기 (0) | 2017.06.28 |