테스트 사이트 - 개발 중인 베타 버전입니다

php -> json 배열?? 로 만들기 채택완료

경하귀요밍 4년 전 조회 3,704

안녕하세요. PHP개발 중 처음보는 형태의 배열??의 형태로 json 값을 만들어 요청이 와서 개발 도중 힌트를 얻고자 질문글 올려봅니다.

 

현재 보내고 있는 json 값은 

[{

"id" : "아이디"

"images": [
 {
  "imageUrl" : "이미지 주소"
 }
],
... 중략
}]

입니다. 여기서 images 의 부분을 

 "images": {

    "0": {
         "imageUrl": "이미지 주소"            
     }
},

요런 형태로 보내길 요청주시는데 해당 부분은 배열이 아닌 다른 형태로 보입니다.

요청온 수정 방향으로 값을 만들려면 어떻게 담아야할지 문의드립니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
"images": [
 {
  "imageUrl" : "이미지 주소"
 }

==

이 부분에 해당하는 소스를 올려 보세요.

 

요청하는 내용은 json배열 대신

인덱스 번호가 있는 object 형태네요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

경하귀요밍
4년 전
엇!! 말씀주신 object 형식이 맞는것 같아요.
배열을 만드는 소스는 아래와 같습니다. 전체적으로 object가 아닌 해당 images 부분만 object로 변환이 가능한가요?

[code]
foreach($data AS $key => $re_d)
{
$review_array[$key]['id'] = $re_d['id'];

$image = explode(',',$re_d['image']);
if($image[0]!="")
{
for($i=0; $i<count($image); $i++)
{
$review_array[$key]['images'][$i]['imageUrl'] = "이미지주소"
$review_array[$key]['imageOrder'][$i] = (string)($i);
}
}
}
[/code]

출력 예시 :
[{
"id" : "아이디",
"images" : {
"0" : {
"imageUrl" : "이미지 주소"
},
...
},
"imageOrder" : ["0"],
...
},
...
]
엑스엠엘
4년 전
$review_array[$key]['images'][ "{$i}" ]['imageUrl'] = "이미지주소"
이렇게 해 보세요.
경하귀요밍
4년 전
"images":[{"imageUrl" : "이미지 주소"},{"imageUrl" : "이미지 주소"}] 이런 형태로 나와서

for문안에
$review_array[$key]['images'] = new stdClass(); 를 선언해주고
$review_array[$key]['images']->imageUrl 이형태로 변경하니
"images":{"imageUrl" : "이미지 주소"} 이렇게 마지막 값만 저장되고 배열형태로 저장이 안됩니다.
해당 $review_array[$key]['images']->imageUrl 부분을 배열형태로 저장하려면 어떻게 해야할지 알 수 있을까요?
엑스엠엘
4년 전
foreach($data AS $key => $re_d)
{
$review_array[$key]['id'] = $re_d['id'];

$image = explode(',',$re_d['image']);
if($image[0]!="")
{

$review_array[$key]['images']= new stdClass;

for($i=0; $i<count($image); $i++)
{
$review_array[$key]['images']->{"$i"}=array( 'imageUrl' => "이미지주소"};
$review_array[$key]['imageOrder'][$i] = (string)($i);
}
}
}

stdClass를 쓰는 것이 정답이네요.

댓글을 작성하려면 로그인이 필요합니다.

식쏭
4년 전

연속된 숫자일경우는 생략되어서 그런것이고

이 경우라면, 키가 굳이 필요 없을것입니다.

 

$arr = array(
        'images' => array(
              '0' => array(

                'imageUrl' => '이미지주소'

              ),

              '2' => array(

                'imageUrl' => '이미지주소'

              ),
        )

);

와 같이 연속적인게 아닐때는 키가 확인됩니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

식쏭
4년 전

images 라는 배열안에 여러개가 포함될 수 있는 다차원 배열 형태입니다.

 

array 로 보자면, 

 

$images = array(
 '0' => array(

    'imageUrl' => '이미지주소'

  ),

'1' => array(

    'imageUrl' => '이미지주소'

  ),


);

이런식으로 0,1,2,3,4... 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

경하귀요밍
4년 전
해당 방법으로 json을 만들면
[{

"id" : "아이디"

"images": [
{
"imageUrl" : "이미지 주소1"
},
{
"imageUrl" : "이미지 주소2"
},
],
이런 형태로 생성됩니다.
식쏭
4년 전
json_encode 값을 디버깅 하면 연속된 숫자 키값에 대해 생략되어 보이지만,
해당 값을 다시 json_decode 디버깅 하면, 키가 확인됩니다.

받는측에서는 decode 해서 처리 할테구요
경하귀요밍
4년 전
object 형식으로 다시 묶어보니까 key값이 보이는 형태로 변경되는데 여기서 원하는 부분만 다시 배열로 묶어야하는 상황에 봉착했습니다..ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인