【问题标题】:Random line break in json responsejson响应中的随机换行符
【发布时间】:2021-03-05 12:39:30
【问题描述】:

我正在使用 ajax 来获取 json 响应并填充我的数据表,但是由于某种原因,json 中的一些随机值有换行符。在数据库中,可以说“每 100 m 行 90 g”,但它在 json 中输出,如下所示。

所有其他行都很好,这是我制作 json 对象的方法。

for($i = 0; $i < $numRows; $i++) {

        $chemicals = getPestsChemicals($connection, $rows[$i]['code']);
        $chemNames = '';

        foreach($chemicals as $chem) {
          $chemNames .= $chem['chemical'].'<br>';
        }

        $mrls = getPestsMrls($connection, $rows[$i]['code']);
        $mrlNames = '';

        foreach($mrls as $mrl) {
          $mrlNames .= (strlen($mrl['mrl']) == 1 ? $mrl['mrl'].".0" : $mrl['mrl']).'<br>';
        }

        if($i != $numRows-1) {
          $body .= '
          {
            "crop": "'.$rows[$i]['crop'].'",
            "diseases": "'.$rows[$i]['pest_name'].'",
            "chemical": "'.$chemNames.'",
            "product": "'.$rows[$i]['product']." ".($rows[$i]['footnote'] != NULL ? '<sup class=\"text-danger font-weight-bold\">'.$rows[$i]['footnote'].'</sup>' : NULL ).'",
            "rate": "'.$rows[$i]['rate'].'",
            "max_no": "'.$rows[$i]['max_no'].'",
            "hi": "'.$rows[$i]['hi'].'",
            "mrl": "'.$mrlNames.'",
            "pcs_no": "'.($rows[$i]['pcs_no'] == 0 ? 'DR' : '0'.$rows[$i]['pcs_no']).'",
            "supplier": "'.$rows[$i]['supplier'].'",
            "use_by_date": "'.$rows[$i]['use_by_date'].'"
          },
        ';
        } else {
          $body .= '
          {
            "crop": "'.$rows[$i]['crop'].'",
            "diseases": "'.$rows[$i]['pest_name'].'",
            "chemical": "N/A",
            "product": "'.$rows[$i]['product']." ".($rows[$i]['footnote'] != NULL ? '<sup class=\"text-danger font-weight-bold\">'.$rows[$i]['footnote'].'</sup>' : NULL).'",
            "rate": "'.$rows[$i]['rate'].'",
            "max_no": "'.$rows[$i]['max_no'].'",
            "hi": "'.$rows[$i]['hi'].'",
            "mrl": "N/A",
            "pcs_no": "'.($rows[$i]['pcs_no'] == 0 ? 'DR' : '0'.$rows[$i]['pcs_no']).'",
            "supplier": "'.$rows[$i]['supplier'].'",
            "use_by_date": "'.$rows[$i]['use_by_date'].'"
          }
        ';
        }
      }

我尝试将相关行包含在 strvaljson_encode 中,但没有成功。这也是它在数据库中的样子

【问题讨论】:

  • 你的json有可能被chunked-encoding编码
  • @Luuk 我该如何反驳?
  • 如果它在数据中,您的数据库管理器会显示换行符吗?如果您以字节形式获取存储的数据,它将揭示其中的实际内容。
  • @BranOIE:如果这确实是问题所在,您必须阅读链接中的链接以了解发生了什么。之后可能是您的网络服务器发生了变化,但是....搜索是您的朋友,请参阅:stackoverflow.com/questions/14315224/…
  • @Luuk 分块编码将应用于 HTTP 级别,它不应影响再次解码后实际数据的样子。

标签: php json


【解决方案1】:

为了快速修复尝试

$rate_string = (string) $rows[$i]['rate'];

然后只需替换:

"rate": "'.$rate_string .'",

如果它无法转换成字符串,您可能会有更多线索。

【讨论】:

  • @BranOIE 尝试后你得到了什么?你有什么错误吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2021-12-20
  • 2017-05-20
  • 1970-01-01
  • 2016-03-03
  • 1970-01-01
相关资源
最近更新 更多