【发布时间】:2016-03-17 07:18:57
【问题描述】:
我有一个 AJAX 结果,在返回之前在 PHP 中得到了 json_encode($result);。
原来返回的数据是这样的:
[{"ID":"4066","post_title":"TATTOO SLEEVES"}]
注意它有 [ ] 括号!!
然后我会解析JSON数据并使用它。
data = $.parseJSON(data);
但是,我需要返回一个额外的值,所以在返回之前的 AJAX 钩子中我添加了:
$sql_search["sql_search_count"] = $sql_search_count;
现在我的数据突然返回如下:
{"0":{"ID":"4066","post_title":"TATTOO SLEEVES"},"sql_search_count":"1"}
不再有 [] 括号!
我正在尝试拆分这些数据;获取“0”字符串部分,并像以前一样将其推入$.parseJSON(data);。但我似乎无法找到方法。
为什么有时有 [ ] 括号有时没有?
如何在带有 [ ] 的新变量中获取“0”字符串?
我尝试了以下方法:
$sql_search[0]["sql_search_count"] = $sql_search_count;
但这给了我一个错误......
如果我将其更改为 $sql_search[0]->sql_search_count = $sql_search_count; 它可以工作。
但它不是不在顶层,它成为第一个结果的孩子,如下所示:[{"ID":"4066","post_title":"TATTOO SLEEVES","sql_search_count","1"}]
【问题讨论】:
-
"我正在尝试拆分这些数据;得到 "0" 字符串部分" - 错误!整个是一个JSON,所以把它作为一个整体来解析。
-
如果您需要返回元素的数量,您可以使用
$.parseJSON(data).length轻松获得该值,而无需添加新参数。 -
如果数组中有更多条目,您将拥有“1”字符串和“2”字符串。不要直接在数组上设置 sql_search_count。将所有内容包装在某个对象中,例如
{ sql_search_count : 1 , results: [ /* your old Array*/ ] } -
Thilo 怎么做?
-
您应该创建一个新对象,然后使用 array_push 将其添加到原始对象中,然后您将获得一个包含两个对象的数组。
标签: php json parsing object brackets