【问题标题】:How to pass a json string from PHP to Python with quotes如何使用引号将 json 字符串从 PHP 传递到 Python
【发布时间】:2020-12-21 11:10:32
【问题描述】:

我已经将一个 JSON 字符串从 PHP 传递到 Python,但我无法在 Python 中使用它,可能是因为 JSON 字符串中的所有引号在 Python 中都被删除了。

PHP 代码:

$post_json = json_encode($_POST);
echo shell_exec("python create_prescription.py $post_json");
return;

Python 代码:

import sys
import json

post_json = sys.argv[1]
print(post_json)

我期望 Python 的输出是:

{"x":"Hello","y":"World"}

相反,我得到的是:

{x:Hello,y:World}

没有引号,我无法解析 Python 中的输入。请告诉我如何解决这个问题。

【问题讨论】:

  • 你检查了$post_json 在 PHP 中的样子吗?
  • 是的,我做到了。在 PHP 中,JSON 字符串带有引号。但是当我将它导入 Python 时,它们就消失了。
  • 您好!我显然找到了解决方案。您可以查看发布的答案。

标签: python php arrays json


【解决方案1】:

我找到了解决方案。只需在 PHP 中编码 JSON 并在 Python 中导出相同的内容。在 Python 中导入模块 base64 并在那里解码字符串。

PHP 代码:

$post_json = json_encode($_POST);
$post_json = base64_encode($post_json);

$command = "python create_prescription.py $post_json";
echo shell_exec($command);
return;

Python 代码:

import base64

post_json = sys.argv[1]
final_output = json.loads(base64.b64decode(post_json))
print(final_output)

干杯!

【讨论】:

    【解决方案2】:

    @Nitish Thorat 的回答很棒。但是,如果你想在 python 中处理数据,你需要再次调用

    #py
    # ...
    final_output = json.loads(base64.b64decode(post_json))
    obj = json.loads(final_output)
    

    我经常问你想对 php 中的数据做点什么,所以

    #py
    print(json.dumps(obj))
    
    //php
    $tmp = exec("python create_prescription.py .$post_json");
    $result = json_decode($tmp); 
    

    只是为了完整性...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多