我正在尝试处理一个json,我将从httprequest到一个类。但问题是,当我尝试将数据保存到我的班级时,他会继续崩溃
Boolean hasmore = tree.get("has_more").getBooleanValue();
if (hasmore == true) {
System.out.println("Ik geraak hier");
JsonNode resourceArrayNode=tree.get("photos");
for(JsonNode jsonNode:resourceArrayNode){
int height=jsonNode.get("height").getIntValue();
result[i].setHeight(height);
//System.out.println(result[i].getHeight());
i++;
}
所以这是处理图片高度的代码。问题是当我用javaexceptionpointer将它设置为我的类时他会崩溃我发现它很安静,因为一切都设置正确
Exception in thread "main" java.lang.NullPointerException
at com.hp.gisware.panoramio.PanoramioResponseDeserializer.deserialize(PanoramioResponseDeserializer.java:29)
at com.hp.gisware.panoramio.PanoramioResponseDeserializer.deserialize(PanoramioResponseDeserializer.java:15)
at org.codehaus.jackson.map.ObjectReader._bindAndClose(ObjectReader.java:768)
at org.codehaus.jackson.map.ObjectReader.readValue(ObjectReader.java:460)
at com.hp.gisware.panoramio.GenericJsonPanoramioGeocoder.transmitLocation(GenericJsonPanoramioGeocoder.java:33)
at com.hp.gisware.panoramio.PanoramioRunner.main(PanoramioRunner.java:26)
Disconnected from the target VM, address: '127.0.0.1:58050', transport: 'socket'
答案 0 :(得分:1)
听起来你在写入结果数组时会得到一个空指针异常。 它是否已正确初始化?将这个JSON数组(可以是任意长度)写入java数组(以固定长度声明)似乎是一个糟糕的选择。您可以使用类似列表的集合吗?
或者get(“Height”)返回null。 你应该在解除引用之前检查一下:
if(jsonNode.has("Height")) {
int height=jsonNode.get("height").getIntValue();
result[i].setHeight(height);
}
否则请在问题中包含java异常消息。
编辑:(添加堆栈跟踪) 嗯,这很奇怪。堆栈跟踪看起来与您的代码不同 - 至少没有一个方法名称与您发布的代码中的任何内容匹配。这可能来自另一个线程吗?可能你的代码在另一个线程中触发代码来发送/接收JSON消息?你可以尝试添加一个try-catch块来捕获NullPointerException,以确认它是否真的被这段代码抛出
答案 1 :(得分:0)
有许多库可以帮助您将json对象解析为Java类。谷歌的GSON https://code.google.com/p/google-gson/
杰克逊 http://jackson.codehaus.org/我认为你好像在使用杰克逊。请指定您使用的库和版本并发布堆栈跟踪,以便我们为您提供进一步的帮助。此外,我们似乎生活在同一个国家:荷兰。
答案 2 :(得分:0)
问题解决了我没有声明每个对象的结果不是它的类的新对象