首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python引用唯一ID的JSON提要

使用Python引用唯一ID的JSON提要
EN

Stack Overflow用户
提问于 2018-06-29 14:07:57
回答 2查看 86关注 0票数 0

我正在使用Python解析JSON提要。JSON提要每30秒左右更新一次。我需要从匹配游戏中提取信息,但是匹配游戏ID的唯一ID节点在每个游戏中都会发生变化。

我已经能够通过硬编码uniqueID来解析我需要的数据,但是当新游戏进入提要时,我将不知道uniqueID是什么,因此代码将失败。

下面的代码确实有效,但我需要一种查找或疯狂梳理(我知道在Python中是不可能的)唯一ID 1572805的方法。

代码语言:javascript
运行
复制
import urllib2, cookielib, json, io
import datetime

url = "JSON URL - REMOVED"
sportsFeed = r"c:\feeds\results.txt"
try:    
    scorepro = urllib2.urlopen(url)
    wjson = scorepro.read()
    wjdata = json.loads(wjson)
    today = str(datetime.datetime.today().strftime('%Y-%m-%d'))
    playerone = wjdata['list']['Sport']['2']['Matchday'][today]['Match']['1572805']['Home']['name']
    print "playerone = " + playerone

except:
    print "error"

下面是JSON的摘录,您可以看到每个游戏的数据都有一个新的uniqueID:-

代码语言:javascript
运行
复制
"timestamp":1530275075969,
"list":{  
  "Sport":{  
    "2":{  
      "id":"2",
      "name":"TENNIS",
      "code":"TEN",
      "hid":"6268717",
      "Matchday":{  
        "2018-06-28":{  
          "date":"2018-06-28",
          "Match":{  
            "1572805":{  
              "ct":0,
              "id":"1572805",
              "lastPeriod":"Set4",
              "leagueCode":"43548",
              "leagueSort":0,
              "leagueType":"Tournament",
              "startTime":"10:05",
              "status":"Fin",
              "statustype":"fin",
              "type":2,
              "visible":"1",
              "Home":{  
                "id":"43095",
                "name":"BOLT A. (AUS)",
                "serve":"1",
                "seed":"",
                "standing":""
              },
              "Away":{  
                "id":"43035",
                "name":"KOKKINAKIS T. (AUS)",
                "serve":"0",
                "seed":"",
                "standing":""
              },
              "Results":{  
                "1":{  
                  "id":"1",
                  "name":"CURRENT",
                  "value":"3-1"
                },
                "Period":{  
                  "1":{  
                    "id":1,
                    "name":"S1",
                    "detail":"SCORE",
                    "value":"7-6",
                    "tiebreak":"8-6"
                  },
                  "2":{  
                    "id":2,
                    "name":"S2",
                    "detail":"SCORE",
                    "value":"7-6",
                    "tiebreak":"7-4"
                  },
                  "3":{  
                    "id":3,
                    "name":"S3",
                    "detail":"SCORE",
                    "value":"4-6",
                    "tiebreak":""
                  },
                  "4":{  
                    "id":4,
                    "name":"S4",
                    "detail":"SCORE",
                    "value":"7-5",
                    "tiebreak":""
                  },
                  "5":{  
                    "id":5,
                    "name":"S5",
                    "detail":"SCORE",
                    "value":"0-0",
                    "tiebreak":""
                  }
                }
              },
              "Information":{  
                "season":{  
                  "id":"364",
                  "name":"2018"
                },
                "country":{  
                  "id":"61738",
                  "name":"ATP SINGLES"
                },
                "league":{  
                  "id":"43548",
                  "name":"WIMBLEDON"
                },
                "shortName":"ATP-S",
                "round":"QR32",
                "note":"",
                "bitArray":"",
                "timestamp":""
              }
            },
            "1572811":{  
              "ct":0,
              "id":"1572811",
              "lastPeriod":"Set4",
              "leagueCode":"43548",
              "leagueSort":0,
              "leagueType":"Tournament",
              "startTime":"10:05",
              "status":"Fin",
              "statustype":"fin",
              "type":2,
              "visible":"1",
              "Home":{  
                "id":"16910",
                "name":"ROBERT S. (FRA)",
                "serve":"0",
                "seed":"",
                "standing":""
              },
              "Away":{  
                "id":"47867",
                "name":"VANNI L. (ITA)",
                "serve":"1",
                "seed":"",
                "standing":""
              },
              "Results":{  
                "1":{  
                  "id":"1",
                  "name":"CURRENT",
                  "value":"3-1"
                },
                "Period":{  
                  "1":{  
                    "id":1,
                    "name":"S1",
                    "detail":"SCORE",
                    "value":"6-4",
                    "tiebreak":""
                  },
                  "2":{  
                    "id":2,
                    "name":"S2",
                    "detail":"SCORE",
                    "value":"3-6",
                    "tiebreak":""
                  },
                  "3":{  
                    "id":3,
                    "name":"S3",
                    "detail":"SCORE",
                    "value":"7-5",
                    "tiebreak":""
                  },
                  "4":{  
                    "id":4,
                    "name":"S4",
                    "detail":"SCORE",
                    "value":"6-1",
                    "tiebreak":""
                  },
                  "5":{  
                    "id":5,
                    "name":"S5",
                    "detail":"SCORE",
                    "value":"0-0",
                    "tiebreak":""
                  }
                }
              },
              "Information":{  
                "season":{  
                  "id":"364",
                  "name":"2018"
                },
                "country":{  
                  "id":"61738",
                  "name":"ATP SINGLES"
                },
                "league":{  
                  "id":"43548",
                  "name":"WIMBLEDON"
                },
                "shortName":"ATP-S",
                "round":"QR32",
                "note":"",
                "bitArray":"",
                "timestamp":""
              }
            },
            "1572826":{  
              "ct":0,
              "id":"1572826",
              "lastPeriod":"Set4",
              "leagueCode":"43548",
              "leagueSort":0,
              "leagueType":"Tournament",
              "startTime":"10:05",
              "status":"Fin",
              "statustype":"fin",
              "type":2,
              "visible":"1",
              "Home":{  
                "id":"44005",
                "name":"WARD J. (GBR)",
                "serve":"1",
                "seed":"",
                "standing":""
              },
              "Away":{  
                "id":"55639",
                "name":"BONZI B. (FRA)",
                "serve":"0",
                "seed":"",
                "standing":""
              },
              "Results":{  
                "1":{  
                  "id":"1",
                  "name":"CURRENT",
                  "value":"1-3"
                },
                "Period":{  
                  "1":{  
                    "id":1,
                    "name":"S1",
                    "detail":"SCORE",
                    "value":"4-6",
                    "tiebreak":""
                  },
                  "2":{  
                    "id":2,
                    "name":"S2",
                    "detail":"SCORE",
                    "value":"2-6",
                    "tiebreak":""
                  },
                  "3":{  
                    "id":3,
                    "name":"S3",
                    "detail":"SCORE",
                    "value":"6-1",
                    "tiebreak":""
                  },
                  "4":{  
                    "id":4,
                    "name":"S4",
                    "detail":"SCORE",
                    "value":"0-6",
                    "tiebreak":""
                  },
                  "5":{  
                    "id":5,
                    "name":"S5",
                    "detail":"SCORE",
                    "value":"0-0",
                    "tiebreak":""
                  }
                }
              },
              "Information":{  
                "season":{  
                  "id":"364",
                  "name":"2018"
                },
                "country":{  
                  "id":"61738",
                  "name":"ATP SINGLES"
                },
                "league":{  
                  "id":"43548",
                  "name":"WIMBLEDON"
                },
                "shortName":"ATP-S",
                "round":"QR32",
                "note":"",
                "bitArray":"",
                "timestamp":""
              }
            },

如何重新创建代码,以便查找所有uniqueID,然后能够使用这些预定义的uniqueID解析JSON?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-29 14:25:14

使用Match切分并循环所有匹配。

代码语言:javascript
运行
复制
import urllib2, cookielib, json, io
import datetime

url = "JSON URL - REMOVED"
sportsFeed = r"c:\feeds\results.txt"
try:    
    scorepro = urllib2.urlopen(url)
    wjson = scorepro.read()
    wjdata = json.loads(wjson)
    today = str(datetime.datetime.today().strftime('%Y-%m-%d'))
    matches = wjdata['list']['Sport']['2']['Matchday'][today]['Match']

    for id, match in matches.items():
        player_name = match['Home']['name']
        print "player = " + player_name

except:
    print "error"
票数 0
EN

Stack Overflow用户

发布于 2018-06-29 14:24:47

使用以下代码解析来自JSON的ID,每次递增一个键#,例如:

代码语言:javascript
运行
复制
id = wjdata['list']['Sport']['2']['Matchday'][today]['Match'].keys()[0]
playerone = wjdata['list']['Sport']['2']['Matchday'][today]['Match'][id]['Home']['name']
id = wjdata['list']['Sport']['2']['Matchday'][today]['Match'].keys()[1]
playerone = wjdata['list']['Sport']['2']['Matchday'][today]['Match'][id]['Home']['name']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51103616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档