>source

이 JSON을 보내고 있습니다.

[{"tipo":""},{"activo":""},{"titulo":"Servicoasd B"},{"texto":"asdasdasd"}]

post 메소드를 통해 php 파일로.

저기, 나는

$obj= json_decode($_POST['sentJson']);

하지만 JSON의 요소에 액세스할 수 없는 것 같습니다.

var_dump(($obj));

객체 표시:

array(4) {
  [0]=>  object(stdClass)#2 (1) {
    ["tipo"]=>    string(0) ""
  }
  [1]=>  object(stdClass)#3 (1) {
    ["activo"]=>    string(0) ""
  }
  [2]=>  object(stdClass)#4 (1) {
    ["titulo"]=>    string(9) "Servico B"
  }
  [3]=>  object(stdClass)#5 (1) {
    ["texto"]=>    string(6) "asdasd"
  }
}

하지만 내가 시도하면

$obj['texto'];
$obj->{'texto'};
$obj[0]['texto'];

"undefined index texto" 또는 "비 객체의 속성을 가져오려는 중"이라고 표시됩니다. 저는 PHP를 처음 접했지만 여전히 제가 뭘 잘못하고 있는지 눈치채지 못하는 것 같습니다. 도움을 주시면 감사하겠습니다.

기술 노트: "JSON 개체"와 같은 것은 없습니다. 문자열인 JSON이 있고 "그 JSON을 파싱하여 얻는 객체"가 있습니다. 그리고 예, 프로그래밍 질문을 할 때 그 기술적 차이가 중요합니다.

Mike 'Pomax' Kamermans2021-10-11 12:24:12

$obj는 배열인 것 같습니다...

Daniel A. White2021-10-11 12:24:12
  • 답변 # 1

    JSON은 4개의 완전히 다른 객체로 구성된 직렬화된 배열이므로 실행할 때json_decode, 그것이 당신이 얻는 것입니다 : 배열.

    해당 배열 내의 개체에 액세스하려면 다른 인덱스 배열과 마찬가지로 개체에 액세스합니다.

    $list= json_decode(...);
    foreach($list as $obj) {
      var_dump($obj)
    }
    

    또는 기존의 숫자 액세스를 사용하여 명시적으로 대상을 지정합니다.

    $list= json_decode(...);
    $last= $list[3];
    $text= $last->texto;
    

    하지만 실제로 물어봐야 할 질문은 이것이 왜 JSON인지입니다. 각 위치에 완전히 다른 객체가 있는 배열은 끔찍한 데이터이므로 수정해야 합니다.

  • 이전 python : 사전에서 가장 큰 n 값을 가져오지만 위치를 유지하는 방법
  • 다음 Grafana cloudspout-button-panel 플러그인이 버튼 패널 URL 요청에 Grafana 대시보드 변수 값을 제대로 추가하지 않습니까?