gpt4 book ai didi

php - 将 JSON 对象写入服务器上的 .json 文件

转载 作者:可可西里 更新时间:2023-11-01 12:42:07 28 4
gpt4 key购买 nike

我正在尝试将我的 JSON 对象写入服务器上的 .json 文件。我现在这样做的方式是:

JavaScript:

function createJsonFile() {

var jsonObject = {
"metros" : [],
"routes" : []
};

// write cities to JSON Object
for ( var index = 0; index < graph.getVerticies().length; index++) {
jsonObject.metros[index] = JSON.stringify(graph.getVertex(index).getData());
}

// write routes to JSON Object
for ( var index = 0; index < graph.getEdges().length; index++) {
jsonObject.routes[index] = JSON.stringify(graph.getEdge(index));
}

// some jQuery to write to file
$.ajax({
type : "POST",
url : "json.php",
dataType : 'json',
data : {
json : jsonObject
}
});
};

PHP:

<?php
$json = $_POST['json'];
$info = json_encode($json);

$file = fopen('new_map_data.json','w+');
fwrite($file, $info);
fclose($file);
?>

它写得很好,信息似乎是正确的,但它没有正确呈现。结果如下:

{"metros":["{\\\"code\\\":\\\"SCL\\\",\\\"name\\\":\\\"Santiago\\\",\\\"country\\\":\\\"CL\\\",\\\"continent\\\":\\\"South America\\\",\\\"timezone\\\":-4,\\\"coordinates\\\":{\\\"S\\\":33,\\\"W\\\":71},\\\"population\\\":6000000,\\\"region\\\":1}",

...但我期待的是:

"metros" : [
{
"code" : "SCL" ,
"name" : "Santiago" ,
"country" : "CL" ,
"continent" : "South America" ,
"timezone" : -4 ,
"coordinates" : {"S" : 33, "W" : 71} ,
"population" : 6000000 ,
"region" : 1
} ,

为什么我会得到所有这些斜线,为什么它们都在一行上?

最佳答案

你是双重编码。 JS PHP 中不需要编码,只需要在一侧进行编码,并且只进行一次。

// step 1: build data structure
var data = {
metros: graph.getVerticies(),
routes: graph.getEdges()
}

// step 2: convert data structure to JSON
$.ajax({
type : "POST",
url : "json.php",
data : {
json : JSON.stringify(data)
}
});

请注意,dataType 参数表示预期的响应 类型,而不是您发送数据的类型。默认情况下,发布请求将作为 application/x-www-form-urlencoded 发送。

我认为您根本不需要该参数。您可以将其缩减为:

$.post("json.php", {json : JSON.stringify(data)});

然后(在 PHP 中)做:

<?php
$json = $_POST['json'];

/* sanity check */
if (json_decode($json) != null)
{
$file = fopen('new_map_data.json','w+');
fwrite($file, $json);
fclose($file);
}
else
{
// user has posted invalid JSON, handle the error
}
?>

关于php - 将 JSON 对象写入服务器上的 .json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3921520/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com