将类stdClass的Object转换为JSON Object [英] Convert Object of class stdClass to JSON Object

查看:138
本文介绍了将类stdClass的Object转换为JSON Object的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这就是我在我的php文件中所拥有的:

this is what i have in my php file:

$session = $m->session;

$ session现在:

$session is now:

object(stdClass)[31]
  public 'id' => string '21112' (length=5)
  public 'external_id' => string '' (length=0)
  public 'sessiongroupid' => string '1843' (length=4)
  public 'eventid' => string '5588' (length=4)
  public 'order' => string '0' (length=1)
  public 'name' => string 'Ferdau Conference' (length=17)
  public 'description' => string 'Ferdau Conference' (length=17)
  public 'starttime' => string '2013-04-18 18:00:00' (length=19)
  public 'endtime' => string '2013-04-18 18:04:00' (length=19)
  public 'speaker' => string '' (length=0)
  public 'location' => string 'Waregem' (length=7)
  public 'mapid' => string '0' (length=1)
  public 'xpos' => string '0.000000' (length=8)
  public 'ypos' => string '0.000000' (length=8)
  public 'maptype' => string 'plan' (length=4)
  public 'imageurl' => string '' (length=0)
  public 'presentation' => string '' (length=0)
  public 'organizer' => string '0' (length=1)
  public 'twitter' => string '' (length=0)
  public 'allowAddToFavorites' => string '0' (length=1)
  public 'allowAddToAgenda' => string '0' (length=1)
  public 'votes' => string '0' (length=1)
  public 'url' => string 'http://ferdau.be' (length=16)
  public 'venueid' => string '0' (length=1)

我想将所有信息发送到名为save的函数在我的javascript文件中。像这样:

I want to send all the information to a function named save in my javascript file. Like this:

echo '<a onclick="save('.$session.')" style="cursor:pointer;" class="metacell">
                        <img src="'.buildUri("images/icons/favorite.png").'" width="16" />
                        <span>Add to favorites</span>
                    </a>';

当我尝试这个时,我总是得到一个错误,只能发送一个字符串。如何将此对象转换为我可以发送到我的javascript函数的内容?

When I try this I always get an error that only a string can be send. How can I convert this object to something I can send to my javascript function?

我试过这个没有结果: $ data = json_encode ($ session);

I've tried this with no result: $data = json_encode($session);

当我做 $ data = json_encode((array)$ session)

我明白了:

<a class="metacell" style="cursor:pointer;" ferdau.be","venueid":"0"})"="" \="" 18:04:00","speaker":"","location":"waregem","mapid":"0","xpos":"0.000000","ypos":"0.000000","maptype":"plan","imageurl":"","presentation":"","organizer":"0","twitter":"","allowaddtofavorites":"0","allowaddtoagenda":"0","votes":"0","url":"http:\="" 18:00:00","endtime":"2013-04-18="" conference","starttime":"2013-04-18="" conference","description":"ferdau="" id":"21112","external_id":"","sessiongroupid":"1843","eventid":"5588","order":"0","name":"ferdau="" onclick="save({">


推荐答案

$ data = json_encode((array)$会话); 是正确的方法。

我猜你在那里展示的HTML是你在firebug中看到的/ chrome dev工具/ IE开发工具。这就是浏览器尝试渲染它之后的样子。尝试查看原始源以查看输出实际上是什么样的。此时您的问题是由双引号引起的 json_encode 导致浏览器引擎在结束值之前关闭 onclick 属性$ data

I'm guessing that the html you are showing there is what you see in firebug/chrome dev tools/IE dev tools. That is what it looks like after the browser attempts to render it. Try looking at the raw source to see what the output actually looks like. Your problem at this point is caused by the double quotes from json_encode causing the browser engine to consider the onclick attribute closed before the end of the values from $data.

您需要在HTML中混合使用双引号和/或使用单引号。我从单引号开始,因为这会更简单。但是你还必须确保 $ data 中没有任何值包含未转义的单引号(因为这会导致同样的问题)。

You will need to do some mix of escaping double-quotes and/or using single-quotes in the HTML. I'd start with single-quotes, as that will be more simple. But you will also have to make sure none of the values in $data include unescaped single quotes (as that would result in the same problem).

这篇关于将类stdClass的Object转换为JSON Object的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆