繁体   English   中英

PHP数组与对象到JSON字符串

[英]PHP array with objects to json string

我想将包含对象数组的对象“ Resonse”转换为JSON字符串。

数据结构示例:

$response = new model_ObjectReponse();
$error1 = new model_Message('error', 'test error 1');
$error2 = new model_Message('error', 'test error 2');
$error3 = new model_Message('error', 'test error 3');
$response->add($error1);
$response->add($error2);
$response->add($error3);
$output = json_encode($response);
print $output;

消息对象具有私有属性类型,并且消息带有getter和setter方法。

那么有人知道如何将其转换为json字符串吗? 顺便说一句,我有同样的问题将其转换为XML。

谢谢您的帮助。

检查http://php.net/manual/en/function.serialize.php

该方法将允许您将对象另存为字符串。 您还可以反序列化对象,无论如何将对象存储为字符串不是一个好习惯。

您可以将Response对象转换为关联数组,然后将该数组传递给json_encode() 像这样:

foreach ($response->getMessages() as $message)
  $responseArray['messages'][] = array(
    'type' => $message->getType(),
    'message' => $message->getMessage()
  );

json_encode($responseArray);

对于XML转换,我编写了一个简单的类,可以将上述代码产生的$response数组转换为DOMDocument对象或XML字符串。 您可以在这里找到它: code.google.com/p/array-to-domdocument/

您的班级定义可能是这里的问题。 如果定义了私有变量,则简单的json_encode将不会有任何可用的输出。 您可以在对象中创建函数以返回json编码的字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM