【发布时间】:2018-11-07 15:20:30
【问题描述】:
我正在通过 eBay API 响应进行解析。我想把它传递给一个更干净、更容易用 JavaScript 解析的网站。我成功解析了 XML……但现在将其转换为 JSON 重新发送回客户端让我有些头疼。
注意:$resp 是 eBay 的回复。使用下面的代码成功解析的是它们的全长 XML。
例如...$valueName 可能是Grade。然后我进入下一个 foreach 循环并获取它的值。这些values 可能是10, 9.5, 9 等。
这是我的 PHP 代码。
$arrayName = array();
$arrayValue = array();
foreach($resp->aspectHistogramContainer->aspect as $name) {
$nameAspect = $name['name'];
//$arrayName["aspectName"] = $nameAspect;
foreach($name->valueHistogram as $value) {
$valueAspect = $value['valueName'];
//$arrayValue["aspectValue"] = $valueAspect;
}
//array_push($arrayName, $arrayValue);
}
echo json_encode($arrayName);
所以,不用我尝试创建自己的 JSON,我就能得到我需要的东西。我回显结果,它与此类似...
名字
----- 价值
----- 价值
----- 价值
名字
----- 价值
名字
等等等等
对于 JSON 响应...我正在寻找类似...
[
{
"name": "NAME",
"value": ["value", "value"]
}, {
"name": "name",
"value": ["value", "value"]
}
]
任何帮助和指导将不胜感激。
eBay 的回复是这样的(还有很多 <aspect> 和 <valueHistogram>)
<getHistogramsResponse xmlns="http://www.ebay.com/marketplace/search/v1/services">
<ack>Success</ack>
<version>1.13.0</version>
<timestamp>2018-11-07T15:32:20.380Z</timestamp>
<aspectHistogramContainer>
<domainDisplayName>Baseball Cards</domainDisplayName>
<aspect name="Card Manufacturer">
<valueHistogram valueName="Ace Authentic">
<count>19</count>
</valueHistogram>
<valueHistogram valueName="American Caramel">
<count>2024</count>
</valueHistogram>
<valueHistogram valueName="APBA">
<count>10554</count>
</valueHistogram>
<valueHistogram valueName="Bazooka">
<count>8826</count>
</valueHistogram>
<valueHistogram valueName="Be A Player">
<count>17</count>
</valueHistogram>
<valueHistogram valueName="Bell Brand Dodgers">
<count>334</count>
【问题讨论】:
-
你忘记向我们展示
$resp的样子,所以我们知道我们可能需要如何操作它。 -
'$resp' 是来自 eBay 的响应。它是解析的 XML 代码。你将成为 aspectName 和 aspectValue... 这就是我正在使用的。
-
是的,但我们需要了解它的结构才能进行翻译。我不想要原始 XML,只想要 PHP 对象结构。一个 var_dump 输出的例子就可以完成这项工作。
-
我认为您可以可能执行
$arrayValue["aspectValue"][] = $valueAspect;,但如果没有看到实际结构,我不能 100% 确定。 (在内部循环之前,您可能需要$arrayValue["aspectValue"] = array()。 -
@ADyson 添加了结构