【问题标题】:NPE when trying to load a json file in Java尝试在 Java 中加载 json 文件时的 NPE
【发布时间】:2014-02-06 02:20:31
【问题描述】:

我正在使用 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);
      }
  }


}

【问题讨论】:

  • 向我们展示loadData 的作用。
  • 它由我正在使用的库提供。这个方法不是我写的。该方法的文档在这里unfoldingmaps.org/javadoc/de/fhpotsdam/unfolding/data/…,它基本上只是“解析 GeoJSON 字符串并为它们创建特征。”
  • 尝试提供文件的绝对路径。
  • 我会尝试,但有趣的是,我在这个目录中有许多 geoJSON 文件,当我尝试将它们加载到程序中时没有生成 NPE,只有这个特定的。
  • 您可以在 jsonlint.com 等网站上查看 JSON。

标签: java nullpointerexception processing geojson


【解决方案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 文件以便我检查。

【讨论】:

  • 干得不错!非常感谢您的帮助!
猜你喜欢
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-18
  • 2021-03-03
  • 2019-03-18
  • 2020-01-02
相关资源
最近更新 更多