【问题标题】:JSon Parse Error: Unable to parse JSON String distance location MYSQL and React NativeJSON解析错误:无法解析JSON字符串距离位置MYSQL和React Native
【发布时间】:2019-10-15 10:21:00
【问题描述】:

祝你有美好的一天。

我收到 JSON 解析错误错误。我想这不仅仅是数字的数量。我想用 React native 将这些输出保存到 firebase 表中。输出如下:

[
    {
        "ID": "1", 
        "CODE": "A1", 
        "distance": "5188.275202003308"
    }
] 
[
    {
        "ID": "1", 
        "CODE": "A1", 
        " distance "" 5188.275202003308 "
    }, 
    {
        " ID ",
        " 2 ",
        "
        CODE ",
        " A2 ",
        " distance ",
        " 6972.949043284923 "
    }
]

反应原生代码:

   fetch('http://.../database/KONUM.php')
      .then((response) => response.json())
      .then((responseJson) => {

 firebase.database().ref('/KONUM/').set(responseJson);

      })
      .catch((error) => {
        console.error(error);
      });

MYSQL PHP 代码:

<?php
include 'DBConfig.php';    

// Create connection
$conn = new mysqli($HostName, $HostUser, $HostPass, $DatabaseName);

if ($conn->connect_error) {   

}   


$sql = "SELECT ID,KODU, ( 3959 * acos( cos( radians(37) ) * cos( radians( ADRES ) ) * cos( radians( ACIK_ADRES ) - radians(-122) ) + sin( radians(37) ) * sin( radians( ADRES ) ) ) ) AS distance 
        FROM ....TBL_MUSTERILER 
        HAVING distance < 11125 
        ORDER BY distance 
        LIMIT 0 , 20;";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row[] = $result->fetch_assoc()) {
        $tem = $row;
        $json = json_encode($tem);
        echo $json;
    }
}
else {
    echo "No Results Found.";
}
$conn->close();
?>

【问题讨论】:

  • JSON 字符串似乎无效由于多种原因。您可以在名为 jsonlint.com 的网站上测试这些字符串

标签: php mysql react-native


【解决方案1】:

构建 JSON 最安全的方法是创建单个 PHP 数据结构、数组或对象,然后仅在完成后对其进行编码。

您还可以使用名为fetch_all() 的方法在一次调用中获取所有行。

<?php
include 'DBConfig.php';    

// Create connection
$conn = new mysqli($HostName, $HostUser, $HostPass, $DatabaseName);

if ($conn->connect_error) {   

}   


$sql = "SELECT ID,KODU, ( 3959 * acos( cos( radians(37) ) * cos( radians( ADRES ) ) * cos( radians( ACIK_ADRES ) - radians(-122) ) + sin( radians(37) ) * sin( radians( ADRES ) ) ) ) AS distance 
        FROM ....TBL_MUSTERILER 
        HAVING distance < 11125 
        ORDER BY distance 
        LIMIT 0 , 20;";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    $all_rows = $result->fetch_all();
    $all_rows['status'] = "OK";                     // addd a status
} else {
    $all_rows['status'] = "No Results Found.";      // report issue in status
}

echo json_encode($all_rows);


$conn->close();
?>

fetch_all() 仅在您的服务器安装了 MySQL Native Driver mysqlnd 时可用。

如果不是你可以使用

if ($result->num_rows > 0) {
    while ($row = $result->fetch_all()) {
        $all_rows[] = $row;
    }
}

【讨论】:

  • 错误代码 React Native: Json 解析器错误: Unrecognized token '?'
  • 那么你能显示正在生成的 JSON 字符串吗
猜你喜欢
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多