fi.foyt.foursquare.api.FoursquareApiException:org.json.JSONException:JSONObject [" icon"]不是字符串

时间:2016-04-20 04:21:49

标签: java

我从git获取foursquare示例java代码和相同的示例值并在我的本地计算机上运行,​​但得到以下异常。 这是我的代码:

String ll = args.length > 0 ? args[0] : "44.3,37.2";

    try {
        FourSquareSampleMain fourSquareSample = new FourSquareSampleMain();
        fourSquareSample.searchVenues(ll);

    } catch (FoursquareApiException e) {
        // TODO: Error handling
        e.printStackTrace();
    }
}

public void searchVenues(String ll) throws FoursquareApiException {
    // First we need a initialize FoursquareApi.
    FoursquareApi foursquareApi = new FoursquareApi("CLIENT_ID",
            "CLIENT_SECRET", null);

    // After client has been initialized we can make queries.
    Result<VenuesSearchResult> result = foursquareApi.venuesSearch(ll, null, null, null, null, null, null, null,
            null, null, null, null, null);

    if (result.getMeta().getCode() == 200) {


        CompactVenue[] venueList = result.getResult().getVenues();
        System.out.println("Compact Venue List size : " + venueList.length);
        // if query was ok we can finally we do something with the data
        for (CompactVenue venue : venueList) {
            // TODO: Do something we the data
            System.out.println("Venue Name : " + venue.getName());
        }
        System.out.println("End of IF Loop: ");
    } else {
        // TODO: Proper error handling
        System.out.println("Error occured: ");
        System.out.println("  code: " + result.getMeta().getCode());
        System.out.println("  type: " + result.getMeta().getErrorType());
        System.out.println("  detail: " + result.getMeta().getErrorDetail());
    }
}

venueList的大小总是&#34; 0&#34;,但是当我调试它时,它会引发以下异常:

  

&#34; org.eclipse.debug.core.DebugException:com.sun.jdi.ClassNotLoadedException:检索数组的组件类型时未加载类型。&#34;

但是当我改变纬度和经度值时很奇怪,

String ll = "-33.883056 , 151.216667";// latlong surry hills sydney

我得到以下异常:

  

fi.foyt.foursquare.api.FoursquareApiException:org.json.JSONException:JSONObject [&#34; icon&#34;]不是字符串。           at fi.foyt.foursquare.api.JSONFieldParser.parseEntity(JSONFieldParser.java:143)           在fi.foyt.foursquare.api.JSONFieldParser.parseValue(JSONFieldParser.java:194)           at fi.foyt.foursquare.api.JSONFieldParser.parseEntity(JSONFieldParser.java:141)           at fi.foyt.foursquare.api.JSONFieldParser.parseEntities(JSONFieldParser.java:57)           at fi.foyt.foursquare.api.FoursquareApi.venuesSearch(FoursquareApi.java:1017)           在FourSquareSampleMain.searchVenues(FourSquareSampleMain.java:57)           在FourSquareSampleMain.main(FourSquareSampleMain.java:43)       引起:org.json.JSONException:JSONObject [&#34; icon&#34;]不是字符串。           at org.json.JSONObject.getString(JSONObject.java:658)           在fi.foyt.foursquare.api.JSONFieldParser.parseValue(JSONFieldParser.java:202)           at fi.foyt.foursquare.api.JSONFieldParser.parseEntity(JSONFieldParser.java:141)

我在这里缺少什么?请建议。

1 个答案:

答案 0 :(得分:1)

我找到了解决方法。它是一个补丁,但它确实有效。详细说明:

  1. 信息取自this post,其中发现并修复了相同的问题
  2. 看看解决问题的差异:https://github.com/wallabyfinancial/foursquare-api-java/compare/master...ganchix:master
  3. 按原样复制这3个原始类(Category,GeoCodeFeature和Icon),并将它们添加到包fi.foyt.foursquare.api.entities下的项目中,然后将其添加到
  4. 注1 :当您在yur项目中替换类(相同的包和类名)时,clasloader将使用您的而不是jar依赖项提供的类,因此,有一个快速修复。 我做到了,它就像一个魅力

    注意2 :更新sdk后,应立即删除此修补程序并升级sdk依赖项

    希望有所帮助