我有以下格式的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
.....
答案 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
)
)
)
)
所以你可以简单地处理一个数组