検索

ホームページ  >  に質問  >  本文

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日前702

全員に返信(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 テキストがあることを確認し、現在のシナリオでは 2 つのフラグを使用します。最初のフラグは常に使用され、2 番目のフラグはより具体的です。

    1. JSON_THROW_ON_ERROR
    2. JSON_BIGINT_AS_STRING
    ###例:### リーリー

    (PHP 8.0以降)

    リーリー

    (PHP 7.3以降)

    JSON_THROW_ON_ERROR

    $data['entity']['payments'][0]['state']['id']

    の JSON のみが表示される理由は、$data であるためです。 = 解析が失敗したため、json_decode(...) オペレーションは null を返しました。 JSON_THROW_ON_ERROR を使用すると、エラーが例外に変換され、エラーが発生したときにスクリプトの実行が停止されるため、発見が容易になります。 これにより、後続の出力でエラーを探す必要がなくなります。

    JSON_BIGINT_AS_STRING

    BIGINT は、

    BigInt

    (ECMA 262) を指します。これは、処理時に json_decode() が精度を失う可能性がある非常に大きな (負および正の) 整数を表す JavaScript の数値型です (3v4l. orgDemo): リーリー リーリー


    参照
      Q&A「PHP に BigInteger クラスはありますか?」
    • https://www.php.net/manual/en/function.json-decode.php
    • https://www.php.net/manual/en/class.jsonException.php
    • 返事
      0
  • キャンセル返事