【问题标题】:Extract certain values from XML response to create custom JSON array从 XML 响应中提取某些值以创建自定义 JSON 数组
【发布时间】:2021-01-23 18:09:18
【问题描述】:

您好,如果这是一个愚蠢的问题,我很抱歉,但如果能帮助您指出正确的方向,我将不胜感激。我有两个我正在使用的 API,第一个返回 XML 以及我需要的内容以及更多内容。第二个 API 采用 JSON 对象。我坚持的是从 XML 响应中获取我需要的值并制作 JSON 对象。目前我有这个 XML:

  <?xml version="1.0" encoding="UTF-8"?>
<wapi>
   <reply status="0" error_str="" error_code="0">
      <item>
         <firstname>Jim</firstname>
         <lastname>Doe</lastname>
         <accountnum>10037529</accountnum>
         <contact_number>353123451234</contact_number>
      </item>
      <item>
         <firstname>Jack</firstname>
         <lastname>Doe</lastname>
         <accountnum>10037530</accountnum>
         <contact_number>353123452345</contact_number>
      </item>
   </reply>
</wapi>

我想获取“accountnum”值的所有实例,并将其插入到下面的 JSON 对象中,并使用名为“customer-id”的静态键,然后将此 JSON 发送到第二个 API。

[
  {
    "customer-id": "10037529"
  },
  {
    "customer-id": "10037530"
  }
]

我正在使用 PHP 来执行此操作,我尝试将 json_encode 更改为 JSON,然后对其进行解析,但我无法让它工作我还将它变成一个数组并循环它但无法获得值出去。我只是在这里写,因为我已经搜索了几个小时,但似乎找不到任何与我正在做的事情相近的东西,或者我只是在解决这个问题。

再一次,任何指针都会很棒,谢谢。

【问题讨论】:

    标签: php json xml


    【解决方案1】:

    假设您的 xml 在 $str 变量中。

    $xml  = simplexml_load_string ($str);
    $data = [];
    foreach ($xml->reply->item as $item) { 
        $data[] = ['customer-id' => (string)$item->accountnum];
    }
    
    echo json_encode($data);
    Output:
    [{"customer-id":"10037529"},{"customer-id":"10037530"}]
    

    【讨论】:

    • 谢谢 Jitendra,这正是我所需要的。我完全看错了 simplexml。
    猜你喜欢
    • 2019-12-03
    • 1970-01-01
    • 2020-08-27
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    相关资源
    最近更新 更多