【问题标题】:How to remove double quotes from a JSON response in javascript? [duplicate]如何从 javascript 中的 JSON 响应中删除双引号? [复制]
【发布时间】:2019-04-20 14:27:13
【问题描述】:

我正在尝试将多个标记添加到谷歌地图中,​​并且我找到了一种方法来做到这一点here。 现在我有一个来自服务器的 json 数组响应,如下所示。

 // function to get user names and addresses
public function getUserAddresses(Request $request)
{
    $users = User::where('address', '!=', null)->select('name', 'address')->get();  //this is a laravel query

    $userData = [];

    foreach ($users as $user) {
        $userData[$user->name] = $user->address;
    }
    return $userData;
}

上面的这段代码给了我下面的响应。

{
  "plumber1": "-1.2523238641713191,36.87899683074249",
  "plumber2": "-1.2192245641713191,36.87899687428849",
  "allan plumber": "-1.2192238641713191,36.87899683068849"
}

但我要使用这些数据,它必须采用以下 javascript 中显示的格式。

[
   ["plumber1", -1.2523238641713191,36.87899683074249],
   ["plumber2", -1.2192245641713191,36.87899687428849],
   ["allan plumber", -1.2192238641713191,36.87899683068849]
];

【问题讨论】:

  • Object.entries(obj)?
  • 您希望结果为原始 javascript 对象或 json 字符串?
  • 作为javascript对象..但没有引号..
  • @Eddie var locations = Object.entries(data);我什至尝试过,但是什么时候是 console.log(locations);它用引号显示。

标签: javascript php arrays json


【解决方案1】:

你可以使用这个php代码

$str = '{
  "plumber1": "-1.2523238641713191,36.87899683074249",
  "plumber2": "-1.2192245641713191,36.87899687428849",
  "allan plumber": "-1.2192238641713191,36.87899683068849"
}';

$array =json_decode($str);
$new_array = [];
foreach ($array as $key => $value) {
  $coordinates = explode(',',$value);
  $coordinate1 = (float) $coordinates[0];
  $coordinate2 = (float) $coordinates[1];
  $new_array[] = array($key,$coordinate1,$coordinate2);
}
print_r($new_array);

输出

        Array
(
    [0] => Array
        (
            [0] => plumber1
            [1] => -1.25232386
            [2] => 36.878996830742
        )

    [1] => Array
        (
            [0] => plumber2
            [1] => -1.2192245641713
            [2] => 36.878996874288
        )

    [2] => Array
        (
            [0] => allan plumber
            [1] => -1.2192238641713
            [2] => 36.878996830688
        )

)

您也可以查看演示 here

这里是 Javascript 版本

    <script type="text/javascript">
var str = `{
  "plumber1": "-1.2523238641713191,36.87899683074249",
  "plumber2": "-1.2192245641713191,36.87899687428849",
  "allan plumber": "-1.2192238641713191,36.87899683068849"
}`;
var obj = JSON.parse(str);
var array = [];
var counter =0;
for (var key in obj) {
  var myarr =  obj[key].split(",");
    array[counter] = [key, parseFloat(myarr[0]), parseFloat(myarr[1])];
    counter++
}
console.log(array);
</script>

【讨论】:

  • 谢谢,现在我要从中删除引号的 JSON 数组是来自 get 请求的响应。这意味着它是动态的,而不是字符串。所以从你的回答中。这里 -> $array =json_decode($str);我必须直接回复..不是字符串..
  • 我要求更改 javascript 中的响应..
  • 我已经更新了我的答案。现在它会给你浮动数字而不是字符串
  • 我已经上传了两个版本,比如 javascript 和 php。你现在可以享受它了... :)
  • 天啊!!!非常感谢...@Zain Farooq
【解决方案2】:

试试json_decode

ini_set( 'precision', 17 );

$jsonToArray = json_decode($json, JSON_NUMERIC_CHECK);

【讨论】:

  • json_decode 不适用于数组..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 2021-08-27
  • 2021-11-20
相关资源
最近更新 更多