【发布时间】:2013-11-06 11:40:10
【问题描述】:
我正在尝试创建存储在 mySQL 中的数据的 JSON 表示形式。
我正在尝试记录一个 RESTful API。
我正在使用 PHP 的 json_encode() 函数。
我有一个表,其中包含诸如
之类的数据1) 名称 2) 父母 3)data_type(对象/数组/字符串/数字匹配JSON数据类型) 4) 价值
我正在尝试创建一个通用函数,它允许我通过简单地将数据添加到 mySQL 数据库来构建这些 JSON 字符串。
我在同时使用对象和数组时遇到了问题。
例如 JSON 应该是:
{
"sessionToken":"","roleName":""
,"data":[
{
"methodTypes":[""] , "objects":[""]
}
]
}
然而它是这样出来的:
{
"sessionToken":"","roleName":""
,"data":[
{
"methodTypes":[""]
}
,{
"objects":[""]
}
]
}
这表明出于某种原因我的代码正在为 methodType 和对象添加一个对象,因为它应该只是在单个对象中。
我正在尝试首先创建一个包含方法类型和对象的数组。 然后我以 $objects->$A 的格式创建一个对象,并使其与第一步中创建的数组相等。 然后我添加到 JSON 生成的主数据数组中。
当同一 JSON 中需要数组和对象但没有成功时,我一直在搜索显示 JSON 使用示例的示例。
任何正确方向的指针将不胜感激。
更新#1:
输入到 json_encode() 的数组的 var_dump 是:
array(3) { ["sessionToken"]=> string(0) "" ["roleName"]=> string(0) "" ["data"]=> array(2) { [0]=> array(1) { ["methodTypes"]=> array(1) { [0]=> string(0) "" } } [1]=> array(1) { ["objects"]=> array(1) { [0]=> string(0) "" } } } }
如果我采用已知良好的 JSON 并执行 json_decode() 那么 var_dump 看起来像:
object(stdClass)#3 (3) { ["sessionToken"]=> string(0) "" ["roleName"]=> string(0) "" ["data"]=> array(1) { [0]=> object(stdClass)#4 (2) { ["methodTypes"]=> array(1) { [0]=> string(0) "" } ["objects"]=> array(1) { [0]=> string(0) "" } } } }
或
array(3) { ["sessionToken"]=> string(0) "" ["roleName"]=> string(0) "" ["data"]=> array(1) { [0]=> array(2) { ["methodTypes"]=> array(1) { [0]=> string(0) "" } ["objects"]=> array(1) { [0]=> string(0) "" } } } }
如果我将其设置为 TRUE 以返回数组而不是对象。
【问题讨论】:
-
你能把你正在使用的数组的
var_dump与json_encode一起发布吗?我认为您的数据结构可能在这方面有误 -
Machavity 感谢您的回复。我已经更新了帖子以显示 var_dump 信息。我可以添加任何其他内容来帮助使问题更清晰吗?
-
尝试只使用 php 数组,因为它们也可以是关联的,
json_encode将在需要时调整为 javascript 对象。例如$arr['foo']=array('bar', 'gggg')将转换为{"foo":["bar", "gggg"]} -
这是一个非常有用的 php 沙箱,可以在浏览器中使用 sandbox.onlinephpfunctions.com 测试 php 代码
-
Charliefl 如果可以的话那就太好了,不过我不知道该怎么做。您能否提供一个工作示例,该示例将生成与此问题发布中第一个黑色代码相等的 JSON?我试过 `$test = array('sessionToken'=>'' ,'roleName'=>'' ,'data' => array('methodTypes' => array() ,'objects' => array() ) ; $test_json = json_encode($test) ; echo $test_json 没有运气
标签: php mysql arrays json object