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

我正在尝试将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

}

?>

以上是 将JSON对象写入服务器上的.json文件 的全部内容, 来源链接: utcz.com/qa/405976.html

回到顶部