저는 Shopware 프로젝트를 진행 중이며 처리된 모든 주문이 포함된 JSON을 설정해야 합니다.
이 JSON은 내가 찾아 변수 $fil에 전달한 디렉터리에 저장되어 있습니다.
으아악얻은 JSON은 $fil 변수에 저장된 후 $jsonData 변수에 전달됩니다.
으아악JSON을 연관 배열로 디코딩하여 아래 키의 값을 바꾸려고 합니다.
으아악교체할 키는 다음과 같습니다. (ID교체를 시도해보세요)
으아악그런 다음 이를 modifiedJsonData 변수에 다시 저장하고 디렉터리로 다시 바꿔 보았습니다.
으아악부분적으로 작동하는 것 같지만 완전히 작동하지는 않으며 (ID)만 교체하는 것도 아닙니다.
아래와 같이:$data['entity']['payments'][0]['state']['id']
위 콘텐츠뿐만 아니라 전체 JSON 콘텐츠를 대체합니다. JSON 콘텐츠는 다음 콘텐츠 이상이어야 합니다.
으아악도와주세요. 제가 뭔가 잘못했을 수도 있습니다
다음 방법으로 우회할 수도 있습니다.
으아악json_decode()를 사용하여 JSON을 디코딩할 때 $jsonData에 올바른 JSON 텍스트가 있는지 확인하고 현재 시나리오에서 두 개의 플래그를 사용하십시오. 첫 번째 플래그는 항상 사용되고 두 번째 플래그는 더 구체적입니다.
JSON_THROW_ON_ERROR
JSON_BIGINT_AS_STRING
예:
으아악(PHP 8.0부터)
으아악(PHP 7.3부터)
JSON_THROW_ON_ERROR
$data['entity']['결제'][0]['state']['id']
의 JSON만 보이는 이유는$data = json_decode 구문 분석이 실패했기 때문에 (...)
작업에서null
을 반환했습니다.$data['entity']['payments'][0]['state']['id']
的JSON,是因为$data = json_decode(...)
操作返回了null
,因为解析失败。使用JSON_THROW_ON_ERROR
를 사용하면 오류가 발생하면 스크립트 실행이 중지되므로 오류를 더 쉽게 발견할 수 있는 예외로 변환됩니다.이렇게 하면 후속 출력에서 오류를 찾는 것을 방지할 수 있습니다.
JSON_BIGINT_AS_STRING
BIGINT는 BigInt(ECMA 262)를 참조합니다. 이는 매우 큰(음수 및 양수) 정수에 대한 JavaScript의 숫자 값 유형으로, json_decode()가 처리 시 정밀도를 잃을 수 있습니다(3v4l.org 데모 ).
으아악 으아악