2013-10-07 83 views
0

我试图将一个foursquare API场地搜索的结果作为一个简单的表格获取到excel中。我使用此请求here并将结果保存到以.json结尾的文件中。然后,我尝试使用几个在线转换器将其更改为CSV/XML以供Excel读取。但是,我只设法让一个网站实际产生结果,不幸的是他们收费。有没有办法让这个查询的结果更容易地进入Excel表格?将Foursquare数据导入到Excel中

+0

结果是什么样的? json响应有多复杂?也许尝试Codo的答案在这里:http://stackoverflow.com/questions/5773683/excel-vba-parsed-json-object-loop –

+0

如果我从上面粘贴json结果到[this](http://www.utilities -online.info/xmltojson/#.UlPFRVBJPV4)网站,然后保存生成的XML,然后将其加载到Chrome中。第5行第1列出现以下错误_error:文档末尾的额外内容_ – dojogeorge

+0

您的API链接点到登录页面,所以没有什么可以看到的。到目前为止,您的问题太含糊,无法提供任何建议。你应该在你的问题中包含json结果(或者如果它太大,那么代表它的一部分) –

回答

0

以下是您可以从响应中提取单个元素的方法。这意味着你需要在每个属性的脚本控件中创建“访问器”函数。

Sub TestIt() 

    Dim json As String, x As Long, num As Long 

    json = CreateObject("scripting.filesystemobject"). _ 
      opentextfile("C:\_Stuff\test\json.txt").readall() 

    'Debug.Print json 

    Dim s As Object, jsObj As Object 
    Set s = CreateObject("ScriptControl") 
    s.Language = "JScript" 

    s.ExecuteStatement "var obj = null;" & vbCrLf & _ 
     "function JSON(s){obj=eval('('+s+')');}" & vbCrLf & _ 
     "function numVenues(){return obj.response.venues.length;}" & vbCrLf & _ 
     "function venueId(i){return obj.response.venues[i].id;}" 

    s.Run "JSON", json 

    num = s.Run("numVenues") 'how many venues 
    Debug.Print num 
    For x = 0 To num - 1 
     Debug.Print s.Run("venueId", x) 
    Next x 


End Sub 
+0

更多的OO方法。只要去array.item(0)看到这个链接(http://stackoverflow.com/questions/5773683/excel-vba-parsed-json-object-loop/19359035#19359035) – ozmike