我有一个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
,但这只是打印了一大堆完全难以辨认的信息。
有没有办法以与第一个脚本返回的格式相同的格式打印此信息,以便我可以比较这两个?谢谢!
答案 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_decode
或json_encode
,它应该看起来更接近您的期望。但是,解析这种方式并不容易。您应该考虑如何计划比较数据,并从逻辑上看看最有意义的内容。