zoukankan      html  css  js  c++  java
  • Chrome下获取二维JSON被反序的问题

    JSON 自从被人们认识以来,就凭借其简易的编码解码方式,良好的可读性、可扩展性以及与 JavaScript 暧昧的关系,逐步吞噬掉了 XML 的空间,现在已经成为 AJAX 数据交换的绝对主力。但是,如果你从后台返回中得到了下面的 JSON,那么这可能会在 Chrome 浏览器中出现一些小问题,这正是本文所要讨论的。

    var people = {
        "Zhang": {"age":28, "location": "成都"},
        "Lee": {"age":32, "location": "昆明"}
    };
    

    上面的代码看起来一切正常,张和李分别来自成都和昆明,一个28岁,一个32岁。我们接收了这个 JSON ,并赋给变量 people ,在 Firefox、IE、Safari 和 Opera 下没有任何问题,但是在 Chrome 中,这个 JSON 很不幸地被反转了:

    var people = {
        "Lee": {"age":32, "location": "昆明"},
        "Zhang": {"age":28, "location": "成都"}
    };
    

    如果你事先知道了返回的数据中包含李和张的信息,这并不会对你的操作产生任何影响。但如果你对返回的信息内容一无所知,而需要使用 for in 来获取这个 JSON 的内容,那么这意味着在 Chrome 中将会得到与其他浏览器顺序刚好相反一组数据。事实上这并非 Chrome 的过错,这个时候你需要做的并不是针对 Chrome 进行反序,而是通知与你协作的后台程序员,让他们为你返回一个数组,这时得到的结果可以在各个浏览器安全地进行遍历。

    var people = [
        "Zhang": {"age":28, "location": "成都"},
        "Lee": {"age":32, "location": "昆明"}
    ];
    

    以 PHP 为例,后台需要进行像下面这样的调整:

    $result = array();
    for($i = 0 ; $i < 10 ; $i++){
        $result[$i]['name'] = 'xxx';
        $result[$i]['age'] = 000;
    }
    echo json_encode($result);
    

    本文的最后一段代码展示了如何从 WordPress 中提取评论者名称并返回给前端的方法,希望对大家能有所帮助。

    $result = array();
    $comments = get_comments();
    foreach($comments as $key=>$comment){
        $result[$key]["authorName"] = $comment -> comment_author;
    }
    echo json_encode($result);
    
  • 相关阅读:
    项目在入口加一个简单的密码验证
    关于APICloud使用心得(原创)
    vue、React Nactive的区别(转载)
    js的Element.scrollIntoView的学习
    立个flag---每天一篇博客
    ACID理解
    CAP原理与最终一致性 强一致性 弱一致性
    事物隔离级别
    分布式事务
    MySQL日志
  • 原文地址:https://www.cnblogs.com/myphoebe/p/2226327.html
Copyright © 2011-2022 走看看