Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Belajar PHP: Konversi JSON – XML – Array – String

Posted on February 2, 2012

Tutorial kali ini akan membahas konversi antar 3 data interchange yang populer, yaitu JSON, XML dan Array. Untuk library konversi ini, gunakan salah satu library buatan om Rochak Chauchan dari India yang dipublish pada PHPClasses.org.

Untuk file librarynya, kurang lebih sebagai berikut:
[sourcecode language=”php”]
<?php
define("NODE_SEPERATOR","#*#");
define("LINE_SEPERATOR","!#=#!");
define("ERROR_STYLE","color:#fff;background-color:#ff0000;font-weight:bold;padding:5px;margin:5px;");

/**
* This class interchange String, XML, JSON and Array into each other.
*
* @author Rochak Chauhan
* @package PhpJsonXmlArrayStringInterchanger
* @version beta
*/
class PhpJsonXmlArrayStringInterchanger{
private $errorLog=array();

/**
* Function to display last error for debugging purpose
*
* @access public
* @return string
*/
public function displayLastError(){
$return="No errors were encountered.";
$c=count($this->errorLog);
if($c>0){
$i=$c-1;
$return="<div style=’".ERROR_STYLE."’>".$this->errorLog[$i]."</div>";
}
echo $return;
}

/**
* Function to display complete error log for debugging purpose
*
* @access public
* @return string
*/
public function displayErrorLog(){
$return="No errors were encountered.";
$c=count($this->errorLog);
if($c>0){
$return="";
for($i=0;$i<$c;$i++){
$return.="<div style=’".ERROR_STYLE."’>".$this->errorLog[$i]."</div>";
}
}
echo $return;
}

/**
* Function to recursivly parse Xml Content
*
* @param mixed $ret
* @access private
* @return array on success and false on failure
*/
private function parseXml($ret) {
$return=false;
if(is_object($ret)){
$ret=(array)$ret;
$this->parseXml($ret);
}
if(is_array($ret)){
foreach($ret as $k=>$v){
if(is_object($v)){
$return[$k]=$this->parseXml($v);
}
else {
$return[$k]=$v ;
}
}
}
return $return;
}

/**
* Function to convert XML into Array
*
* @param string $xmlContent
* @access public
* @return array on success and false on failure
*/
public function convertXmlToArray($xmlContent){
$return=false;
$ret=simplexml_load_string($xmlContent);
if($ret===false){
$this->errorLog[]="Invalid XML content: $xmlContent in function: ".__FUNCTION__." on line: ".__LINE__." in filename= ".__FILE__;
return false;
}
else{
$return=$this->parseXml($ret);
if($return===false){
$this->errorLog[]="Failed to parse XML content in function: ".__FUNCTION__." on line: ".__LINE__." in filename= ".__FILE__;
return false;
}
}
return $return;
}

/**
* Function to recursivly parse Array Content
*
* @param mixed $ret
* @access private
* @return string(xml) on success and false on failure
*/
private function parseArray($array) {
if(is_array($array)){
foreach($array as $k=>$v){
if(trim($k)==""){
$this->errorLog[]="Array needs to be associative as parameter in function: ".__FUNCTION__." on line: ".__LINE__." in filename= ".__FILE__;
return false;
}
else{
if (is_numeric($k)) {
$k="nodeValue$k";
}
if(is_array($v)){
$return.="<$k>".$this->parseArray($v)."</$k>";
}
else {
$return.="<$k>$v</$k>";
}
}
}
}
else{
$this->errorLog[]="Invalid array in function: ".__FUNCTION__." on line: ".__LINE__." in filename= ".__FILE__;
return false;
}
return $return;
}

/**
* Function to convert an associative array into XML
*
* @param string $array
* @access public
* @return string(xml) on success and false on failure
*/
public function convertArrayToXML($array){
$return="<?xml version=’1.0′ encoding=’ISO-8859-1′?><PhpJsonXmlArrayStringInterchanger>";
$return.=$this->parseArray($array);
$return.="</PhpJsonXmlArrayStringInterchanger>";
return $return;
}

/**
* Function to convert an JSON into XML
*
* @param string $json
* @access public
* @return string(xml) on success and false on failure
*/
public function convertJsonToXML($json){
if(!is_string($json)){
$this->errorLog[]="The first parameter should to be string in function: ".__FUNCTION__." on line: ".__LINE__." in filename= ".__FILE__;
return false;
}
$array=json_decode($json,true);
if($array===false){
$this->errorLog[]="Failed to decode JSON in function: ".__FUNCTION__." on line: ".__LINE__." in filename= ".__FILE__;
return false;
}
else{
return $this->convertArrayToXML($array);
}
}

/**
* Function to convert an JSON into array
*
* @param string $json
* @access public
* @return array on success and false on failure
*/
public function convertJsonToArray($json){
if(!is_string($json)){
$this->errorLog[]="The first parameter should to be string in function: ".__FUNCTION__." on line: ".__LINE__." in filename= ".__FILE__;
return false;
}
$array=json_decode($json,true);
if($array===false){
$this->errorLog[]="Failed to decode JSON in function: ".__FUNCTION__." on line: ".__LINE__." in filename= ".__FILE__;
return false;
}
else{
return $array;
}
}

/**
* Function to parse String and convert it into array
*
* @param array $array
* @access public
* @return array on success and false on failure
* @todo refactor the code from line 205-222 (automate it)
*/
public function convertStringToArray($string,&$myarray=""){
$lines = explode(LINE_SEPERATOR,$string);
foreach ($lines as $value){
$items = explode(NODE_SEPERATOR,$value);
if (sizeof($items) == 2){
$myarray[$items[0]] = $items[1];
}
elseif (sizeof($items) == 3){
$myarray[$items[0]][$items[1]] = $items[2];
}
elseif (sizeof($items) == 4){
$myarray[$items[0]][$items[1]] [$items[2]] = $items[3];
}
elseif (sizeof($items) == 5){
$myarray[$items[0]][$items[1]] [$items[2]][$items[3]] = $items[4];
}
elseif (sizeof($items) == 6){
$myarray[$items[0]][$items[1]] [$items[2]][$items[3]][$items[4]] = $items[5];
}
elseif (sizeof($items) == 7){
$myarray[$items[0]][$items[1]] [$items[2]][$items[3]][$items[4]][$items[5]] = $items[6];
}
}
return $myarray;
}

/**
* Function to parse Array and convert it into string
*
* @param array $array
* @access private
* @return string on success and false on failure
*/
private function convertArrayToString($myarray,&$output="",&$parentkey=""){
if(is_array($myarray)){
if (trim($parentkey)=="") {
$parentkey=LINE_SEPERATOR;
}
foreach($myarray as $key=>$value){
if (is_array($value)) {
$parentkey .= $key.NODE_SEPERATOR;
$this->convertArrayToString($value,$output,$parentkey);
$parentkey = "";
}
else {
$output .= $parentkey.$key.NODE_SEPERATOR.$value.LINE_SEPERATOR;
}
}
}
else{
$this->errorLog[]="Invalid array in function: ".__FUNCTION__." on line: ".__LINE__." in filename= ".__FILE__;
return false;
}
return $output;
}

/**
* Function to convert XML into string
*
* @param string $xml
* @return string on success and false on failure
*/
public function convertXmltoString($xml){
$array=$this->convertXmlToArray($xml);
if ($array===false) {
return false;
}
else {
return $this->convertArrayToString($array);
}
}
}
?>
[/sourcecode]

Contoh Penerapan

Contoh data kasar (json, xml, dan array):
[sourcecode language=”php”]
<?php
$sampleXml='<?xml version="1.0" encoding="ISO-8859-1"?>
<mainNode>
<node1>
<FirstName>First Name1</FirstName>
<LastName>Last Name1</LastName>
<Misc>
<sample1>A1</sample1>
<sample2>A2</sample2>
</Misc>
</node1>
<node2>
<FirstName>First Name2</FirstName>
<LastName>Last Name2</LastName>
<Misc>
<sample1>B1</sample1>
<sample2>B2</sample2>
</Misc>
</node2>
<node3>
<FirstName>First Name3</FirstName>
<LastName>Last Name3</LastName>
<Misc>
<sample1>C1</sample1>
<sample2>C2</sample2>
</Misc>
</node3>
</mainNode>’;

$sampleArray=array(
‘node1’=>array("abc"=>1234),
‘node2’=>array("xyz"=>9876)
);

$sampleJson='{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}’;

$sampleString="!#=#!node1#*#FirstName#*#First Name1!#=#!!#=#!node1#*#LastName#*#Last Name1!#=#!!#=#!node1#*#Misc#*#sample1#*#A1!#=#!!#=#!node1#*#Misc#*#sample2#*#A2!#=#!node2#*#FirstName#*#First Name2!#=#!node2#*#LastName#*#Last Name2!#=#!node2#*#Misc#*#sample1#*#B1!#=#!node2#*#Misc#*#sample2#*#B2!#=#!node3#*#FirstName#*#First Name3!#=#!node3#*#LastName#*#Last Name3!#=#!node3#*#Misc#*#sample1#*#C1!#=#!node3#*#Misc#*#sample2#*#C2!#=#!";

//Create class object
require_once("PhpJsonXmlArrayStringInterchanger.inc.php");
$object=new PhpJsonXmlArrayStringInterchanger();
?>
[/sourcecode]

Konversi XML ke Array

[sourcecode language=”php”]
//XML to Array
$array=$object->convertXmltoArray($sampleXml);
if($array===false){
//$object->displayErrorLog();
$object->displayLastError();
}
else{
echo "<pre>";
print_r($array);
exit;
}
[/sourcecode]

Konversi Array ke XML

[sourcecode language=”php”]
// Array to xml
$xml=$object->convertArrayToXML($sampleArray);
if($xml===false){
//$object->displayErrorLog();
$object->displayLastError();
}
else{
header("content-type: text/xml");
echo $xml;
exit;
}
[/sourcecode]

Konversi JSON ke XML

[sourcecode language=”php”]
// JSON to xml
$xml=$object->convertJsonToXML($sampleJson);
if($xml===false){
//$object->displayErrorLog();
$object->displayLastError();
}
else{
header("content-type: text/xml");
echo $xml;
exit;
}
[/sourcecode]

Konversi JSON ke Array

[sourcecode language=”php”]
// JSON to array
$array=$object->convertJsonToArray($sampleJson);
if($array===false){
//$object->displayErrorLog();
$object->displayLastError();
}
else{
echo "<pre>";
print_r($array);
exit;
}
[/sourcecode]

Konversi XML ke String

[sourcecode language=”php”]
//XML to String
$string=$object->convertXmltoString($sampleXml);
if($string===false){
//$object->displayErrorLog();
$object->displayLastError();
}
else{
echo $string;exit;
}
[/sourcecode]

Konversi String ke Array

[sourcecode language=”php”]
//String to Array
$array=$object->convertStringToArray($sampleString);
if($array===false){
//$object->displayErrorLog();
$object->displayLastError();
}
else{
echo "<pre>";
print_r($array);
}
[/sourcecode]

Bagaimana dengan contoh diatas? mudah kan mengkonversi antar tipe data dengan PHP dan library ini?. Selamat mencoba.

Terbaru

  • Inilah Cara Dapat Saldo Cool Lady Tanpa Undang Teman, Ternyata Begini Trik Rahasianya!
  • Inilah Cara Main Watermelon Merge Fun Biar Dapat Saldo DANA, Apakah Benaran Membayar?
  • Inilah Kenapa Stok Penarikan Free Reels Sering Habis dan Cara Mengatasinya Agar Saldo Cair!
  • Inilah Alasan Kenapa Telat Lapor SPT 2026 Nggak Bakal Kena Denda, Cek Aturan Lengkapnya!
  • Inilah Cara Mematikan Koreksi Otomatis di WhatsApp Agar Nggak Salah Ketik Lagi
  • Apa itu Bujang Inam? Inilah Alasan Kenapa Kata Ini Jadi Makian Paling Kasar dalam Budaya Medan dan Batak!
  • Inilah Kenapa Link FF Kipas My ID Verify UID Beta Testing Sering Gagal dan Cara Menghadapinya
  • Gini Caranya Mulai Dropshipping Pake AI di Tahun 2026, Auto Cuan Tanpa Ribet!
  • Baterai Smartwatch Boros? Inilah Caranya Biar Baterai Smartwatch Kalian Bisa Awet Berhari-hari!
  • Belum Tahu? Inilah Fakta Cahaya Misterius di Lampung yang Ternyata Sampah Roket China CZ-3B!
  • Inilah Roblox Mod APK 2026, Fitur Premium Jadi Gratis dan Cara Pasangnya yang Perlu Kalian Tahu!
  • Inilah Panduan Lengkap UTUL UGM 2026, Cari Tahu Jadwal, Biaya Pendaftaran, Sampai Info Uang Pangkal IPI di Sini!
  • Inilah IGRS di Roblox dan Steam, Ternyata Ini Alasan Komdigi Kasih Aturan Ketat!
  • Inilah Makna Mendalam Regina Caeli: Kenapa Umat Katolik Wajib Doa Ratu Surga Selama Masa Paskah?
  • Inilah Kronologi Lengkap Kecelakaan Truk TNI di Kalideres: Simak Fakta dan Status Sopirnya Sekarang!
  • Inilah Rahasia Ambil Ide Youtube Lain, Tapi Konten Kalian Nggak Terlihat Membosankan
  • Studi Kasus SEO: Ellevest Dapat 14 Ribu Pengunjung Organik Per Bulan dengan Strategi SEO Niche dan Otomasi AI
  • Inilah Rahasia ReciMe, Potensi Sukses dari Aplikasi Resep Sederhana
  • Perkuat Kemandirian Industri Alat Kesehatan Nasional, Astra Komponen Indonesia Hadirkan Alat Kesehatan Berbasis Teknologi Digital
  • Vidrush, Solusi Produksi Video massal buat Channel Faceless
  • Inilah Higgsfield AI Audio, Trik Canggih Buat Voice Cloning dan Dubbing Video Youtube Otomatis!
  • Everything You Need to Know About Project X and the Rumored AI-Powered Remaster of The Sims 4
  • Inilah Trik Cuan dari Instagram Jadi Affiliator, Tapi Tanpa Perlu Jualan Produk!
  • Inilah 7 Ide Channel YouTube Aneh Tapi Sederhana yang Bisa Kalian Mulai Sekarang Juga!
  • Apa itu Umroh & Keutamaannya: Inspirasi dari pergiumroh.com
  • Belum Tahu? Gini Caranya Dapat Bisnis Sukses Cuma dari Clipping Video Pake AI
  • Inilah Rahasia Perbaiki Algoritma Video YouTube yang Mulai Sepi
  • Kenapa Cicilan di Bank Syariah Itu Tetap?
  • Inilah 7 Produk Digital Paling Realistis untuk Kalian yang Mau Jualan Online Tahun Ini!
  • Inilah 4 Strategi Memilih Niche SEO Terbaik Supaya Blog Kalian Cepat Ranking
  • How to Design a Services Like Google Ads
  • How to Fix 0x800ccc0b Outlook Error: Step-by-Step Guide for Beginners
  • How to Fix NVIDIA App Error on Windows 11: Simple Guide
  • How to Fix Excel Formula Errors: Quick Fixes for #NAME
  • How to Clear Copilot Memory in Windows 11 Step by Step
  • How to Use Orbax Checkpointing with Keras and JAX for Robust Training
  • How to Automate Any PDF Form Using the Power of Manus AI
  • How to Training Your Own YOLO26 Object Detection Model!
  • How to Build a Full-Stack Mobile App in Minutes with YouWare AI
  • How to Create Consistent Characters and Cinematic AI Video Production with Seedance
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin
  • Apa Itu Predator Spyware? Ini Pengertian dan Kontroversi Penghapusan Sanksinya
  • Mengenal Apa itu TONESHELL: Backdoor Berbahaya dari Kelompok Mustang Panda
  • Siapa itu Kelompok Hacker Silver Fox?
  • Apa itu CVE-2025-52691 SmarterMail? Celah Keamanan Paling Berbahaya Tahun 2025

©2026 emka.web.id | Design: Newspaperly WordPress Theme