PHP将JSON字符串转换为Object或Array

时间:2015-10-18 08:55:00

标签: javascript php json object

我知道如果我在google上搜索这个,你会得到很多回击,我花了最近两天试图找出发生了什么,并且没有成功。

所以,我正在使用Wordpress,但不确定它与我的问题有什么关系,我在存储中有一个有效的JSON字符串,我需要将它放在PHP中,然后放在一个对象中。

JSON字符串是PHP中的一个对象,我转换了因为我在sessionStorage中需要它,所以这是我如何在PHP中转换它:

$encodedTime = json_encode($time);
$encodedTime = str_replace("'", "", $encodedTime);

然后将其加载到元素中:

<a class="button" href="/?page_id=714" name="viewButton" rel='<?php echo $encodedTime ?>'>View</a>

以下是现在存储在浏览器上的sessionStorage中的对象:

{"uuid":"108-417f-b5e6-970baec37","low":2929,"run":50793,"contact":"a07-e4b0-4977-ad10-af7aecf4ef80","completed":true,"values":[{"category":{"base":"Great","eng":"Great"},"node":"f85ed85-495e-8eaf-1e6cfdbadf97","time":"2015-10-12T11:28:13.371Z","text":"Great thanks","rule_value":"Great","value":"Great","label":"Response 1"}],"steps":[{"node":"83e332e0-a456-449f-a4f6-cee688f9395b","arrived_on":"2015-10-12T11:27:43.866Z","left_on":"2015-10-12T11:27:44.052Z","text":"Hello! Good Morning  This morning?","type":"A","value":"None"},{"node":"f85ed8a8-e745-495e-8eaf-1e6cfdbadf97","arrived_on":"2015-10-12T11:27:44.052Z","left_on":"2015-10-12T11:28:13.371Z","text":"Great thanks","type":"R","value":"Great"},{"node":"424912da-e680-432d-877c-307117366f98","arrived_on":"2015-10-12T11:28:13.374Z","left_on":"2015-10-12T11:28:13.477Z","text":"Thats great to hear!, Wishing you a good day","type":"A","value":"None"}],"created_on":"2015-10-12T11:27:43.721Z","modified_on":"2015-10-12T11:28:13.482Z","expires_on":null,"expired_on":null,"runtime":"12 - 10 @ 11 hour"}

这已通过JSONLint验证。

这是PHP代码:

$time = "<script>document.write(time)</script>";

如果我现在print_r($time)我得到相同的打印,一个有效的JSON字符串。太好了!

基于我所读到的PHP有json_decode这样的要求,但它不起作用,但确实给了我一个空白

$time = json_decode("<script>document.write(time)</script>", true); // PHP Code
print_r($time);

如果我尝试json_encode它会给我带来有趣的角色。

如果我尝试使用以下方法将其设为对象:

$time = (object) json_decode("<script>document.write(time)</script>", true);

它给了我:

  

stdClass Object()

$ time =(object)“document.write(time)”;

  

stdClass对象([scalar] =&gt; {“uuid”:“1788-417f-b5e6-970bab44ec37”,“low”:2629,“run”:5046793,“contact”:“a0eb0-4977-ad10- af7aecf4ef80" , “完成”:真 “值”:[{ “类别”:{ “基地”: “大”, “主机”: “大”}, “节点”: “f85ed85-495e-8eaf-1e6cfdbadf97” ,“时间”:“2015-10-12T11:28:13.371Z”,“文字”:“非常感谢”,“rule_value”:“伟大”,“价值”:“伟大”,“标签”:“回复1 “}],” 步骤 “:[{” 节点 “:” 83e332e0-A45-a4f6-cee688f9395b “ ”arrived_on“: ”2015-10-12T11:27:43.866Z“, ”left_on“:” 2015-10- 12T11:27:44.052Z“,”text“:”Hello!morning?“,”type“:”A“,”value“:”None“},{”node“:”f85ed8a8-5e-8eaf-1e6cfdbadf97“ ,“arri_on”:“2015-10-12T11:27:44.052Z”,“left_on”:“2015-10-12T11:28:13.371Z”,“文字”:“非常感谢”,“类型”:“R “ ”值“: ”大“},{ ”节点“: ”424912da-e680-432d-877C-307117366f98“, ”arrived_on“: ”2015-10-12T11:28:13.374Z“, ”left_on“:” 2015-10-12T11:28:13.477Z“,”text“:”听到很棒!祝你有美好的一天“,”输入“:”A“,”value“:”None“}],”created_on “:” 2015-10-12T11:27:43.721Z “ ”modified_on“: ”2015-10-12T11:28:13.482Z“,” expires_on“:null,”expired_on“:null,”runtime“:”12 - 10 @ 11 hour“})

所以我不知道为什么它不起作用。我可以选择使用Javascript并使用这些信息,但我确实需要它在PHP中,因为有更多的工作要做这些信息。

请有人帮忙指出我在哪里以及为什么会出错?

1 个答案:

答案 0 :(得分:1)

使用PHP代码无法获取javascript变量值。他们是不同的东西。如果您想了解更多信息,建议您阅读this question

那么......怎么做?

如果你想在后端使用那些数据,你需要创建一个AJAX请求,正如RambRaider所说。如果您需要在前端使用此功能,则可以使用JSON.parse简单地解析json数据。