如何使用JSON.parse()解析多个JSON数组?

时间:2019-01-29 07:06:26

标签: arrays json

我正在从db获取记录,并为每一行创建一个数组,并使用json_encode()对其进行编码。 现在,我的数据返回如下:[{"slug":"bitcoin","change7d":"-3.87"}][{"slug":"maker","change7d":"-8.58"}]

当我尝试解析ajax调用中的数据时,console.log()返回错误SyntaxError: Unexpected token [ in JSON at position 39。这是我的代码:

在我的php文件中:

    foreach($result as $row){
        $data[] = $row;

    }
    print json_encode($data);

在我的js文件中:

    var newData = JSON.parse(result);

如果我稍稍更改查询并获得一条记录,那么解析数据就没有麻烦了。

4 个答案:

答案 0 :(得分:0)

JSON.parse解析单个有效的JS对象({}结构或数组)。因此,在您的情况下,解决方案要么从数据库中逐个数组获取并逐一解析它们,要么尝试将它们转换为从数据库获得的文本级别的一个大数组数组。为此,您需要用方括号将数组括起来,并在它们之间放置逗号。

在您的情况下,它将如下所示:

  [
    [{"slug":"bitcoin","change7d":"-3.87"}],
    [{"slug":"maker","change7d":"-8.58"}]
  ]

答案 1 :(得分:0)

您正在解析的JSON无效。您应该返回一个对象数组以正确地解析数据,而不是两个数组。例如:

@{
 Html.ViewData.TemplateInfo.HtmlFieldPrefix = "Contact"; 
}
 @await Html.PartialAsync("_YourPartialViewName", Model.Contact)

答案 2 :(得分:0)

您应该创建一个包含记录的单个数组,只需尝试

print json_encode($result)

在您的PHP文件中

答案 3 :(得分:0)

经过大量研究,我设法做到了这一点:

var old = JSON.stringify(result).replace(/\]\[/g, ",");
var newData = JSON.parse(old);

console.log(newData);

它将所有出现的'] ['替换为'',因此将响应数据转换为有效JSON。

它给出了预期的结果。