字典的内部顺序在 XMLHTTPRequest 中的 JSON.parse() 之后发生变化

问题描述

直接调用端点的代码

def countSongsFull():
    for i in range(0,len(shArray)):
        for j in range(0,len(shArray[i])):  # For every song
            if shArray[i][j]['trackName'] == "Vintage Chanel (feat. Joey Bada$$,Kirk Knight,Meechy Darko & Zombie Juice)":
                shArray[i][j]['trackName'] = "Vintage Chanel (feat. Joey Badass,Meechy Darko & Zombie Juice)"
            track = shArray[i][j]['trackName']
            artist = shArray[i][j]['artistName']
            if track in songDict:
                songDict[track][1] += shArray[i][j]['msPlayed']
            else:
                songDict.update({track: [artist,shArray[i][j]['msPlayed']]})

    sortedList = OrderedDict(sorted(songDict.items(),key=lambda item: item[1][1],reverse=True))
    return json.dumps(sortedList,separators=(',',':'))

直接调用端点时的输出

{"UnkNown Track":["UnkNown Artist",121091397],"Blind":["Korn",32389011],"Falling Away from Me":["Korn",31157418],"Hot Dog":["Limp Bizkit",30380901],"Closer":["Nine Inch Nails",29512377],"It's On!":["Korn",28081239],"Be Quiet and Drive (Far Away)":["Deftones",24715597],"Justin":["Korn",24513041],"Dirty":["Korn",24267603],"Psycho Holiday":["Pantera",24170972]}

XMLHTTPRequest 代码

var replyParse;
    var http = new XMLHttpRequest();
    http.open('GET','/cgi-bin/simpleData.py?songF=True',true);
    http.setRequestHeader('content-type','application/x-www-form-urlencoded');
    http.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            replyParse = JSON.parse(this.responseText);
            console.log(replyParse);
        }
    };
    http.send(null);

XMLHTTPRequest 之后的控制台输出

{745: Array(2),1985: Array(2),2002: Array(2),3005: Array(2),5200: Array(2),90210: Array(2),UnkNown Track: Array(2),Blind: Array(2),Falling Away from Me: Array(2),Hot Dog: Array(2),Closer: Array(2)}

为什么在 XMLRequest 之后订单会发生变化,我该如何纠正?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)