在发布问题之前,我已经花了几个小时仔细研究了几个类似的答案。
我正在从数据库中的表中检索数据,我想将其编码为JSON。但是,仅当表只有一行时,json_encode()的输出才有效。如果有多个行,则http://jsonlint.com/上的测试将返回错误。
这是我的查询:
$result = mysql_query($query);
$rows = array();
//retrieve and print every record
while($r = mysql_fetch_assoc($result)){
$rows['data'] = $r;
//echo result as json
echo json_encode($rows);
}
这使我得到以下JSON:
{
"data":
{
"entry_id":"2",
"entry_type":"Information Relevant to the Subject",
"entry":"This is my second entry."
}
}
{
"data":{
"entry_id":"1",
"entry_type":"My Opinion About What Happened",
"entry":"This is my first entry."
}
}
当我在http://jsonlint.com/上运行测试时,它返回此错误:
Parse error on line 29:
..."No comment" }}{ "data": {
---------------------^
Expecting 'EOF', '}', ',', ']'
但是,如果我仅使用JSON的前半部分…
{
"data":
{
"entry_id":"2",
"entry_type":"Information Relevant to the Subject",
"entry":"This is my second entry."
}
}
…或者如果我只测试下半部分…
{
"data":{
"entry_id":"1",
"entry_type":"My Opinion About What Happened",
"entry":"This is my first entry."
}
}
…同一测试将返回“有效JSON”。
我想要的是能够在表的每一行中以单个[有效] JSON输出。
任何建议将不胜感激。
问题是您要为每行吐出单独的JSON,而不是一次完成所有操作。
$result = mysql_query($query);
$rows = array();
//retrieve and print every record
while($r = mysql_fetch_assoc($result)){
// $rows[] = $r; has the same effect, without the superfluous data attribute
$rows[] = array('data' => $r);
}
// now all the rows have been fetched, it can be encoded
echo json_encode($rows);
我所做的较小更改是将数据库的每一行作为新值存储在$rows
数组中。这意味着完成后,$rows
数组将包含查询中的 所有
行,因此一旦完成,您就可以获得正确的结果。
解决方案的问题在于,您正在为数据库的一行回显有效的JSON,但json_encode()
不知道其他所有行,因此,您将获得一系列单独的JSON对象,而不是包含一个单独的JSON对象。数组。
问题内容: 我正在尝试使用DOMDocument解析一些HTML,但是当我这样做时,我突然失去了编码(至少这对我来说是这样)。 这段代码的结果是我得到了一堆不是日语的字符。但是,如果我这样做: 正确显示。我尝试过saveHTML和saveXML,但都无法正确显示。我正在使用PHP 5.3。 我所看到的: 应该显示什么: 编辑:我已经将代码简化为五行,因此您可以自己对其进行测试。 这是返回的html
问题内容: 我想从网址获取html内容,并使用正则表达式解析html内容。但是html内容具有一些多字节字符。所以我遇到了标题中描述的错误。 有人可以告诉我如何解决这个问题吗? 问题答案: 您需要编辑问题以显示(1)您使用的代码(2)完整的错误和回溯(3)涉及的网址(4)您尝试将其 编码 为gbk的 unicode 字符是什么 您似乎已经从html内容中的原始字节中获得了unicode字符-怎么样
问题内容: 我的文件在第一行都有编码定义器,就像我的 正如我在相关问题上提到的那样,我用来返回api文档。由于我通过以下方式定义编码: 一切正常,当我调用我的API服务时,除了 由pprint由字典形成的字符串 外 , 没有任何编码问题 __ 由于我在字典中的某些值中使用土耳其语字符,因此pprint将其转换为等效的字符,例如: 我的纯文本输出如下: 我尝试将pprint输出解码或编码为不同的编码
我正试图抓取一个网站,但它给了我一个错误。 我正在使用以下代码: 我得到了以下错误: 我能做些什么来解决这个问题?
我的代码适用于英语文本,但不适用于俄语search_text。我怎么才能修好它? 错误文本 UnicodeEncodeError:“latin-1”编解码器无法对位置41-46中的字符进行编码:正文('МССаа')不是有效的latin-1。使用身体。如果要发送utf-8编码的文件,请对其进行编码(“utf-8”)。 我的代码 我试过了 但是收到的
我正在尝试修改bigquery-dataflow示例以处理CSV文件。https://github.com/GoogleCloudPlatform/bigquery-etl-dataflow-sample 我已将readObject更改为解析CSV并将其添加到data对象。在运行管道时,我收到以下错误: DoFnRunnerBase$DoFnProcessContext. out(DoFnRunn