JSON到PHP类转换

时间:2015-02-27 11:54:21

标签: php json

我有以下格式的JSON:

{
  "intent": "session",
  "urls": {
    "url1": "http://example.com/url1",
    "url2": "http://example.com/url2"
  },
  "user": {
    "name": "username"
  },
  "sessions": [
    {
      "session": {
        "login": "timeIn",
        "logout": "timeOut"
      }
    }
  ]
}

最初我在PHP中创建了一个stdclass对象并且正在实时实例化。稍后为了使代码更健壮,而不是创建stdclass对象,我想创建一个会话类,我将从我的调用类中实例化该类。就像标准的OOPS一样。但是,我无法找到在类对象中添加“urls”的方法。在这里,我不想创建另一个类URL,其中包含像url1,url2这样的变量,然后使用它。

有人可以建议我如何创建一个对应JSON对象的类,以及如果有一些JSON到PHP stdclass映射引用,因为我找到的那个对我不起作用并且信息不完整。

这是我一直在尝试的......

class session {
    var $intent ;
    var $urls = array($url1, $url);  //Fails
    var $urls->url1;
    var $urls->url2;   //Fail

.....

2 个答案:

答案 0 :(得分:0)

这样的东西?像下面这样调用构造函数:

$session = new Session($intent, $urls);

在调用之前将url放在数组中。或者你可以用

将它们逐个放入

$session->setUrl($url1);

class Session {
    var $intent;
    var $urls = array();

    function __construct($intent = "", $urls = "") {
        $this->intent = $intent;
        $this->urls = $urls;
    }

    function setUrls($url) {
        $this->urls[] = $url;
    }

    function getUrls() {
       return $this->urls;
    }
}

在旁注中,班级名称应以大写字母开头。

答案 1 :(得分:0)

您是尝试从json创建对象还是反过来?

也许打字可以帮到你? 将json转换为object

        $obj = json_decode('{
                          "intent": "session",
                          "urls": {
                            "url1": "http://example.com/url1",
                            "url2": "http://example.com/url2"
                          },
                          "user": {
                            "name": "username"
                          },
                          "sessions": [
                            {
                              "session": {
                                "login": "timeIn",
                                "logout": "timeOut"
                              }
                            }
                          ]
                        }');

将URL从对象更改为数组     $ obj-> urls =(array)$ obj-> urls;

所以最后一个对象就是这个

    stdClass Object
(
        [intent] => session
        [urls] => Array
        (
                [url1] => http://example.com/url1
                [url2] => http://example.com/url2
        )

        [user] => stdClass Object
        (
                [name] => username
        )

        [sessions] => Array
        (
                [0] => stdClass Object
                (
                        [session] => stdClass Object
                        (
                                [login] => timeIn
                                [logout] => timeOut
                        )

                )

        )

)

所以你可以简单地处理一个数组