Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在键中包含索引号的JSON请求上动态循环_Json_Excel_Vba_Web Scraping - Fatal编程技术网

在键中包含索引号的JSON请求上动态循环

在键中包含索引号的JSON请求上动态循环,json,excel,vba,web-scraping,Json,Excel,Vba,Web Scraping,我编写了以下VBA宏: Sub getLineUps() Dim lastRow As Long Dim strURL As String Dim strJSON As String Dim strMatchID As String Dim strIndex As Integer Dim i, x As Integer Dim Json As Object lastRow = Range("A8").CurrentRegion.Rows.Count For x = 9 To lastR

我编写了以下VBA宏:

Sub getLineUps()

Dim lastRow As Long
Dim strURL As String
Dim strJSON As String 
Dim strMatchID As String
Dim strIndex As Integer
Dim i, x As Integer
Dim Json As Object


lastRow = Range("A8").CurrentRegion.Rows.Count

For x = 9 To lastRow
   strMatchID = Cells(9, 1).Value
   strURL = "https://api.football-data.org/v2/matches/" & strMatchID
   Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
   MyRequest.Open "Get", strURL
   MyRequest.setRequestHeader "X-Auth-Token", "personal_password"
   MyRequest.Send
   Set Json = JsonConverter.ParseJson(MyRequest.ResponseText)

   For Each Item In Json("match")("homeTeam")("lineup")
      Cells(9, 11).Value = Item(0)("name")
      Cells(9, 12).Value = Item(1)("name")
      Cells(9, 13).Value = Item(2)("name")
      Cells(9, 14).Value = Item(3)("name")
      Cells(9, 15).Value = Item(4)("name")
      Cells(9, 16).Value = Item(5)("name")
      Cells(9, 17).Value = Item(6)("name")
      Cells(9, 18).Value = Item(7)("name")
      Cells(9, 19).Value = Item(8)("name")
      Cells(9, 20).Value = Item(9)("name")
      Cells(9, 21).Value = Item(10)("name")
   Next
Next

End Sub
运行此宏会显示以下错误消息:运行时错误“13”:以下行上的类型不匹配:
单元格(9,11)。值=项(0)(“名称”)
我的JSON请求的输出如下所示:

{
“头2头”:{
“numberOfMatches”:7,
“总体目标”:19,
“主队”:{
"赢":1,,
“绘制”:1,
"损失":5
},
“awayTeam”:{
"赢":5,,
“绘制”:1,
"损失":1
}
},
“匹配”:{
“id”:233132,
“竞争”:{
“id”:2021年,
“名称”:“英超联赛”
},
“季节”:{
“id”:151,
“起始日期”:“2018-08-10”,
“结束日期”:“2019-05-12”,
“当前比赛日”:11,
“获胜者”:无,
“可用资产”:[
“常规季节”
]
},
“联合通讯社”:“2018-11-03T12:30:00Z”,
“状态”:“已完成”,
“分钟”:无,
‘出席人数’:10792,
‘地点’:‘活力体育馆’,
“比赛日”:11,
‘舞台’:‘常规季’,
‘团体’:‘常规赛’,
“最新更新”:“2018-11-05T05:03:52Z”,
“得分”:{
“赢家”:“客场球队”,
“持续时间”:“常规”,
“全职”:{
“主队”:1,
“awayTeam”:2
},
“中场休息时间”:{
“主队”:1,
“awayTeam”:1
},
“业余时间”:{
“主队”:无,
“awayTeam”:无
},
“处罚”:{
“主队”:无,
“awayTeam”:无
}
},
“主队”:{
“id”:1044,
'姓名':'伯恩茅斯空军基地',
“教练”:{
“id”:11594,
“姓名”:“Eddie Howe”,
“出生国”:“英格兰”,
“国籍”:“英格兰”
},
“船长”:{
'id':8232,
“姓名”:“西蒙·弗朗西斯”,
“衬衫号码”:2
},
‘阵容’:[
{
“id”:8247,
“姓名”:“Ryan Fraser”,
“位置”:“中场”,
“衬衫号码”:24
},
{
“id”:3327,
“姓名”:“刘易斯·库克”,
“位置”:“中场”,
“衬衫号码”:16
},
{
“id”:8229,
“姓名”:“阿斯米尔·贝戈维奇”,
“位置”:“守门员”,
“衬衫号码”:27
},
{
“id”:3737,
“姓名”:“杰斐逊·勒马”,
“位置”:“中场”,
“衬衫号码”:8
},
{
“id”:8231,
“姓名”:“亚当·斯密”,
“位置”:“防御者”,
“衬衫号码”:15
},
{
“id”:8240,
“姓名”:“Nathan Aké”,
“位置”:“防御者”,
“衬衫号码”:5
},
{
“id”:8251,
“姓名”:“Callum Wilson”,
“位置”:“攻击者”,
“衬衫号码”:13
},
{
“id”:4321,
“姓名”:“大卫布鲁克斯”,
“位置”:“攻击者”,
“衬衫号码”:20
},
{
'id':8232,
“姓名”:“西蒙·弗朗西斯”,
“位置”:“防御者”,
“衬衫号码”:2
},
{
“id”:8234,
“姓名”:“史蒂夫·库克”,
“位置”:“防御者”,
“衬衫号码”:3
},
{
“id”:8242,
“姓名”:“少年斯坦尼斯拉斯”,
“位置”:“中场”,
“衬衫号码”:19
}
],
“长凳”:[
{
“id”:8227,
“姓名”:“Artur Boruc”,
“位置”:“守门员”,
“衬衫号码”:1
},
{
“id”:8233,
“姓名”:“查理·丹尼尔斯”,
“位置”:“防御者”,
“衬衫号码”:11
},
{
“id”:8246,
“姓名”:“安德鲁·苏尔曼”,
“位置”:“中场”,
“衬衫号码”:6
},
{
“id”:8243,
“姓名”:“丹·高斯林”,
“位置”:“中场”,
“衬衫号码”:4
},
{
“id”:8255,
“姓名”:“杰曼·迪福”,
“位置”:“攻击者”,
“衬衫号码”:18
},
{
“id”:8254,
“name”:“Jordon Ibe”,
“位置”:“攻击者”,
“衬衫号码”:10
},
{
“id”:8253,
'name':'Lys Mousset',
“位置”:“攻击者”,
“衬衫号码”:9
}
]
},
“awayTeam”:{
id:66,
“姓名”:“曼联俱乐部”,
“教练”:{
“id”:11613,
“姓名”:“何塞·穆里尼奥”,
“出生国”:“葡萄牙”,
“国籍”:“葡萄牙”
},
“船长”:{
“id”:3317,
“姓名”:“Ashley Young”,
“衬衫号码”:18
},
‘阵容’:[
{
“id”:3188,
“姓名”:“David De Gea”,
“位置”:“守门员”,
“衬衫号码”:1
},
{
“id”:7909,
“name”:“Mata”,
“位置”:“攻击者”,
“衬衫号码”:8
},
{
“id”:7896,
“姓名”:“克里斯·斯莫林”,
“位置”:“防御者”,
“衬衫号码”:12
},
{
“id”:7911,
“姓名”:“亚历克西斯·桑切斯”,
“位置”:“攻击者”,
“衬衫号码”:7
},
{
“id”:3372,
“姓名”:“安东尼·马修”,
“位置”:“攻击者”,
“衬衫号码”:11
},
{
“id”:7898,
“姓名”:“卢克·肖”,
“位置”:“防御者”,
“衬衫号码”:23
},
{
“id”:3492,
“姓名”:“维克多·尼尔森·林德尔夫”,
“位置”:“防御者”,
“衬衫号码”:2
},
{
“id”:3317,
“姓名”:“Ashley Young”,
“位置”:“中场”,
“衬衫号码”:18
},
{
“id”:3438,
“姓名”:“Nemanja Matić”,
“位置”:
Set Json = JsonConverter.ParseJson(MyRequest.ResponseText)("match")("homeTeam")("lineup")
Option Explicit
Public Sub ReadValues()
    Dim fso As Object, stream As Object, jsonText As String, item As Object
    Dim json As Object, ws As Worksheet, i As Long
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set stream = fso.OpenTextFile("C:\Users\User\Desktop\test.json", ForReading)
    jsonText = stream.ReadAll
    stream.Close

    Set json = JsonConverter.ParseJson(jsonText)("match")("homeTeam")("lineup") 'collection of dictionaries
    i = 1
    For Each item In json
       ws.Cells(9, i).Value =  item("name")
       i = i + 1
    Next
End Sub