PHP脚本以错误的格式提取信息?试着用JSON来获取它

时间:2014-08-06 14:26:50

标签: php python json

我有一个Python脚本从一个服务中提取信息,一个PHP中的脚本从另一个服务中提取。我想解析并比较两者的数据,所以显然我需要信息格式相同。

Python脚本以JSON格式返回文本文件。这是一个小片段。忽略里面的信息。我只是想显示格式。

{
    "category": 0,
    },
    "cluster_seed": "24",
    "clusters": {
        "clusters": [
            {
                "center": {
                    "000002": [
                        "massachusetts",
                        "new hampshire",
                        "new jersey"
                    ],
                    "000003": [
                        "Windows",
                        "OSX"
                    ]
                }

等...

但是,PHP脚本会返回如下信息:

Array
(
    [0] => Array
        (
            [name] => John Smith
            [engagementScore] => 0
            [firstActivity] => 1386555168108
            [lastActivity] => 1386555168108
            [attributes] => Array
                (
                    [_deviceType] => Tablet
                    [_os] => Android
                    [_browser] => Chrome
                )

            [segmentMemberships] => Array
                (
                    [0] => Array
                        (
                            [segmentationName] => example
                            [segementationId] => example
                        )

                )

我不确定这里发生了什么。我猜它是作为PHP对象/数组而不是原始JSON文件打印的?我希望它的格式与第一个片段完全相同。这是我的PHP中提取此信息的代码:

$response = curl_exec($session);
$info = curl_getinfo($session);

$body = substr($response, $info['header_size']);
$decoded_result = json_decode($body, true);

我认为json_decode会以相同的格式打印它,但显然情况并非如此。我试过json_encode,但这只是打印了一大堆完全难以辨认的信息。

有没有办法以与第一个脚本返回的格式相同的格式打印此信息,以便我可以比较这两个?谢谢!

2 个答案:

答案 0 :(得分:1)

这是json_decode的主要目的:以JSON格式获取字符串并将其转换为PHP数组或PHP StdClass对象,所以我不确定你的问题是什么确切地说。

从你的问题来看,我认为你要做的是(在PHP中)从某些服务获取结果,然后从Python脚本中获取结果并比较两者。您应该json_decode两个结果,然后您有两个可以轻松遍历的PHP数组,以便执行比较,而不是两个很难比较的字符串。

json_decode视为PHP等同于Python的json.load

答案 1 :(得分:1)

json_decode将获取您的原始JSON字符串并将其转换为您的程序可以理解的数据结构。这在Python和PHP之间会有所不同。

看起来相同的是从Python传递给PHP的JSON编码字符串。这是一种通用的文本格式。只需直接打印出来,而不是先使用json_decodejson_encode,它应该看起来更接近您的期望。但是,解析这种方式并不容易。您应该考虑如何计划比较数据,并从逻辑上看看最有意义的内容。