PHP を使用して Shopware 6.5 で JSON キー コンテンツを置き換えて保存する方法
P粉306523969
P粉306523969 2023-09-09 23:36:03
0
2
573

私は Shopware プロジェクトに取り組んでおり、処理されたすべての注文を含む JSON を設定する必要があります。

この JSON は、私が見つけたディレクトリに保存され、変数$filに渡されます。

リーリー

取得した JSON は変数$filに格納され、変数$jsonDataに渡されます。

リーリー

JSON を連想配列にデコードして、以下のキーの値を置き換えようとしています。

リーリー

置き換えるキーは以下の通り(IDを置き換えてみてください)

リーリー

次に、それを変数modifiedJsonDataに保存し、ディレクトリに置き換えて戻してみました。

リーリー

(ID) を置き換えるだけではなく、部分的には機能するようですが、完全には機能しないようです。

以下に示すように:$data['entity']['payments'][0]['state']['id']

上記のコンテンツだけでなく、JSON コンテンツ全体を置き換えます。JSON コンテンツは次のコンテンツ以上である必要があります:

リーリー

助けてください、私が何か間違ったことをしたかもしれません

P粉306523969
P粉306523969

全員に返信 (2)
P粉762730205

次の方法でも回避できます:

リーリー
いいねを押す+0
    P粉438918323

    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
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!