微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 将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",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 
   }
?>

原文地址:https://www.jb51.cc/php/133802.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐