찾다

 >  Q&A  >  본문

PHP를 사용하여 Shopware 6.5에서 JSON 키 콘텐츠를 교체하고 저장하는 방법

저는 Shopware 프로젝트를 진행 중이며 처리된 모든 주문이 포함된 JSON을 설정해야 합니다.

이 JSON은 내가 찾아 변수 $fil에 전달한 디렉터리에 저장되어 있습니다.

으아악

얻은 JSON은 $fil 변수에 저장된 후 $jsonData 변수에 전달됩니다.

으아악

JSON을 연관 배열로 디코딩하여 아래 키의 값을 바꾸려고 합니다.

으아악

교체할 키는 다음과 같습니다. (ID교체를 시도해보세요)

으아악

그런 다음 이를 modifiedJsonData 변수에 다시 저장하고 디렉터리로 다시 바꿔 보았습니다.

으아악

부분적으로 작동하는 것 같지만 완전히 작동하지는 않으며 (ID)만 교체하는 것도 아닙니다.

아래와 같이:$data['entity']['payments'][0]['state']['id']

위 콘텐츠뿐만 아니라 전체 JSON 콘텐츠를 대체합니다. JSON 콘텐츠는 다음 콘텐츠 이상이어야 합니다.

으아악

도와주세요. 제가 뭔가 잘못했을 수도 있습니다

P粉306523969P粉306523969448일 전703

모든 응답(2)나는 대답할 것이다

  • P粉762730205

    P粉7627302052023-09-10 15:55:36

    다음 방법으로 우회할 수도 있습니다.

    으아악

    회신하다
    0
  • P粉438918323

    P粉4389183232023-09-10 11:11:10

    json_decode()를 사용하여 JSON을 디코딩할 때 $jsonData에 올바른 JSON 텍스트가 있는지 확인하고 현재 시나리오에서 두 개의 플래그를 사용하십시오. 첫 번째 플래그는 항상 사용되고 두 번째 플래그는 더 구체적입니다.

    1. JSON_THROW_ON_ERROR
    2. 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 데모 ).

    으아악 으아악

    회신하다
    0
  • 취소회신하다