【发布时间】:2010-12-02 00:29:08
【问题描述】:
我正在开发一个必须与 PHP 5.2.13 服务器应用程序通信的 Silverlight 3 应用程序。 我们正在使用JSON.NET 来完成这项工作,但我在使用字典时遇到了一些问题。
我正在做一些实验并试图反序列化一个包含字典的对象:
public Dictionary<string, Block> Table
{
get { return m_table; }
set { m_table = value; }
}
C# 可以正确序列化,我对此很满意,但在 PHP 方面,当序列化具有空 Table 的等效对象时,它将不起作用。
$this->Table = array();
问题在于,显然,空数组不被视为关联数组,因此它们被导出为 [] 而不是 {}。
我想在数组中添加'null' => null 之类的东西(强制关联),然后在客户端中进行一些清理,但我不控制客户端 C# 对象,我也不能将它们限制为可以为空。 ..我坚持这个;)
你知道有什么解决办法吗?
感谢您的宝贵时间,非常感谢 :)
编辑:为了澄清,我无法控制 C# 和 PHP 对象的结构。 在我的测试中,我创建了一个包含字典的对象,但孔对象立即被编码。 这是它的一个过度简化的版本:
class Block
{
public $X = 0;
public $Y = 0;
public $Name = '';
public $Children = array();
public $Table = array();
public $Nested = null;
}
Table 应该是字典并编码为
echo json_encode( new Block() );
【问题讨论】:
-
在 PHP 端,您使用的是内置的
json_encode函数还是其他一些库? -
好的,很好。查看我的答案-我认为它可以解决您的问题:)
-
编辑了我的问题,很抱歉之前没有澄清它;)