尝试使用Java加载json文件时的NPE

时间:2014-02-06 02:20:31

标签: java nullpointerexception processing geojson

我正在使用Processing 2.1,这是一种基于Java构建的语言,允许创建可视化。目前,我正在尝试阅读geoJSON文件并在地图上显示此信息。

我在Processing.org网站提供的IDE中进行编码。它在某种意义上是非常原始的,因为它没有调试代码的能力。它会返回错误但我不能进入我的代码来找出我的问题。

我目前收到此错误:NullPointerException

就是这样,我被告知没有别的东西阻止它出现在那条线上。

  List<Feature> counties = GeoJSONReader.loadData(this, "ireland.geo.json");

我不明白为什么我会得到它。我试图读取的文件存在。有谁可以帮我解决这个问题?

以下是我的完整代码:

    UnfoldingMap map;
List<Marker>countyMarkers;
List<Marker>countyMarkers2;
color c1 = color(204, 153, 0);

void setup() {
  size(800, 600);
  smooth(); 
  //Map
  map = new UnfoldingMap(this);
  MapUtils.createDefaultEventDispatcher(this, map);
  List<Feature> counties = GeoJSONReader.loadData(this, "ireland.geo.json");
  countyMarkers = MapUtils.createSimpleMarkers(counties);
  map.addMarkers(countyMarkers);
}

void draw() {
  map.draw();

  for (int i = 0; i < countyMarkers.size(); i++) {
      Marker county = countyMarkers.get(i);
                county.setColor(c1);

      if (county.isInside(map, mouseX, mouseY)) {
        county.draw(map);
        HashMap countyProps = county.getProperties();
        String countyName = countyProps.get("city").toString();
        println(countyName);
      }
  }


}

1 个答案:

答案 0 :(得分:1)

在此展开开发者。

这是因为我们的JSON解析器只处理Geo JSON规范的基础知识。 (见http://unfoldingmaps.org/tutorials/markers-data-geojson.html

你可以通过使用Processing的loadJSONArray和loadJSONObject方法自己实现解析来解决这个问题。


附录:虽然你没有提供你的json文件,但是我发现了一个用于爱尔兰的县,这可能是因为该文件中的空属性。请试用这个版本的Unfolding,它现在处理这个而不会抛出NPE。 https://dl.dropboxusercontent.com/u/599609/Unfolding_for_processing_0.9.5.1.zip 如果这不是原因,请提供您的JSON文件,以便我查看。