gpt4 book ai didi

php - 创建包含来自 mySQL 数据源的数组和对象的 JSON

转载 作者:行者123 更新时间:2023-11-29 13:29:55 25 4
gpt4 key购买 nike

我正在尝试创建存储在 mySQL 中的数据的 JSON 表示形式。

我正在尝试记录 RESTful API。

我正在使用 PHP 的 json_encode() 函数。

我有一个包含数据的表,例如

1) 姓名2) 家长3)data_type(对象/数组/字符串/数字以匹配JSON数据类型)4)值(value)

我正在尝试创建一个通用函数,它允许我通过简单地将数据添加到 mySQL 数据库来构建这些 JSON 字符串。

不过,我在使用对象和数组时遇到了问题。

例如 JSON 应该是:

{
"sessionToken":"","roleName":""
,"data":[
{
"methodTypes":[""] , "objects":[""]
}
]
}

但是结果是:

{
"sessionToken":"","roleName":""
,"data":[
{
"methodTypes":[""]
}
,{
"objects":[""]
}
]
}

这表明由于某种原因,我的代码正在为 methodType 和对象添加一个对象,而它应该只在单个对象中。

我尝试首先创建一个包含 methodTypes 和对象的数组。然后我以 $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 以返回数组而不是对象。

最佳答案

编辑以提供所需的输出

$data = ['sessionToken' => '',
'roleName' => '',
'data' => [['methodTypes' => [''], 'objects' => ['']]]
];

它产生了。这是可行的,因为我将关联数组包装在非关联数组中

{"sessionToken":"","roleName":"","data":[{"methodTypes":[""],"objects":[""]}]}

编辑

有关 json_encode 的更多信息Javascript 数组仅包含数字键。时期。如果你有一个看起来像关联数组的东西,它实际上是一个 JS 对象(可以使用括号引用,即 var['name']var.name 是等价的)。

由于 json_encode 无法在 JSON 中创建关联数组,因此它会将 PHP 关联数组转换为对象。因此,您可以在上面的示例中看到,我返回了一个对象而不是数组,除非我没有指定键。

echo json_encode(['name' => 'value']);

产量

{"name":"value"}

同时

echo json_encode(['value']);

产量

["value"]

关于php - 创建包含来自 mySQL 数据源的数组和对象的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com