将值从json读取到java对象时发生java.lang.NullPointerException
这里我正在从youtube到java阅读json值。 在获取缩略图对象值时,我正确地获取了除缩略图数据以外的值。我获取的是将值从json读取到java对象时发生java.lang.NullPointerException,java,json,Java,Json,这里我正在从youtube到java阅读json值。 在获取缩略图对象值时,我正确地获取了除缩略图数据以外的值。我获取的是java.lang.NullPointerException public class JsonVideoDetais { public static void main(String... args) { BufferedReader reader = null; StringBuilder buffer = null;
java.lang.NullPointerException
public class JsonVideoDetais {
public static void main(String... args) {
BufferedReader reader = null;
StringBuilder buffer = null;
try {
String link = "https://gdata.youtube.com/feeds/api/videos/" + "aa_wFClyiVE" + "?v=2&alt=jsonc";
URL url = new URL(link);
reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
buffer = new StringBuilder();
int read;
char[] chars = new char[1024];
while ((read = reader.read(chars)) != -1) {
buffer.append(chars, 0, read);
}
} catch (Exception e) {
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException ex) {
Logger.getLogger(JsonVideoDetais.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
videoDetails data;
data = new Gson().fromJson(buffer.toString(), videoDetails.class);
System.out.println(data.getData().getTitle());
System.out.println(data.getData().getTn().getHqDefault());
System.out.println(data.getData().getTn().getSqDefault());
}
}
class videoDetails {
private Data data;
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
public String toString() {
return String.format("data:%s", data);
}
}
class Data {
private String id;
private String title;
private String description;
private int duration;
private Thumbnail tn;
public Thumbnail getTn() {
return tn;
}
public void setTn(Thumbnail tn) {
this.tn = tn;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String toString() {
return String.format("title:%s,id:%s,description:%s,tn:%s,duration:%d", title, id, description, tn, duration);
}
}
class Thumbnail {
private String sqDefault;
private String hqDefault;
public String getSqDefault() {
return sqDefault;
}
public void setSqDefault(String sqDefault) {
this.sqDefault = sqDefault;
}
public String getHqDefault() {
return hqDefault;
}
public void setHqDefault(String hqDefault) {
this.hqDefault = hqDefault;
}
public String toString() {
return String.format("sqDefault:%s,hqDefault:%s", hqDefault, sqDefault);
}
}
我得到了以下例外
Exception in thread "main" java.lang.NullPointerException
at utility.JsonVideoDetais.main(JsonVideoDetais.java:52)
打电话的时候
System.out.println(data.getData().getTn().getHqDefault());
System.out.println(data.getData().getTn().getSqDefault());
如果你能看到这个。它具有sqDefault
和hqDefault
我想获取sqDefault
和hqDefault
的值。
如何做到这一点。使用调试器找出哪个对象为空是解决问题的最快方法 或 使用以下代码查找空返回值:
System.out.println(data);
System.out.println(data.getData());
System.out.println(data.getData().getTn());
--以下文本是新添加的-----------------
好吧,我已经在我的笔记本电脑上运行了你的程序,而
https://gdata.youtube.com/feeds/api/videos/aa_wFClyiVE?v=2&alt=jsonc#data/thumbnail/hqDefault
根本不包含tn
字段。这就是为什么总是得到空值。使用调试器找出哪个对象为空是解决问题的最快方法
或
使用以下代码查找空返回值:
System.out.println(data);
System.out.println(data.getData());
System.out.println(data.getData().getTn());
--以下文本是新添加的-----------------
好吧,我已经在我的笔记本电脑上运行了你的程序,而
https://gdata.youtube.com/feeds/api/videos/aa_wFClyiVE?v=2&alt=jsonc#data/thumbnail/hqDefault
根本不包含tn
字段。这就是为什么总是得到空值。使用调试器找出哪个对象为空是解决问题的最快方法
或
使用以下代码查找空返回值:
System.out.println(data);
System.out.println(data.getData());
System.out.println(data.getData().getTn());
--以下文本是新添加的-----------------
好吧,我已经在我的笔记本电脑上运行了你的程序,而
https://gdata.youtube.com/feeds/api/videos/aa_wFClyiVE?v=2&alt=jsonc#data/thumbnail/hqDefault
根本不包含tn
字段。这就是为什么总是得到空值。使用调试器找出哪个对象为空是解决问题的最快方法
或
使用以下代码查找空返回值:
System.out.println(data);
System.out.println(data.getData());
System.out.println(data.getData().getTn());
--以下文本是新添加的-----------------
好吧,我已经在我的笔记本电脑上运行了你的程序,而
https://gdata.youtube.com/feeds/api/videos/aa_wFClyiVE?v=2&alt=jsonc#data/thumbnail/hqDefault
根本不包含tn
字段。这就是为什么您总是得到空值。在您的数据类中,我创建了这样一个对象。我猜缩略图对象正在设置为缩略图,tn在我这边也不起作用
private Thumbnail thumbnail;// instead of tn
结果输出为:-
Blood Glucose Hindi - Dr. Anup, MD Teaches Series
https://i1.ytimg.com/vi/aa_wFClyiVE/hqdefault.jpg
https://i1.ytimg.com/vi/aa_wFClyiVE/default.jpg
在您的数据类中,我创建了这样一个对象。我猜缩略图对象正在设置为缩略图,tn在我这边也不起作用
private Thumbnail thumbnail;// instead of tn
结果输出为:-
Blood Glucose Hindi - Dr. Anup, MD Teaches Series
https://i1.ytimg.com/vi/aa_wFClyiVE/hqdefault.jpg
https://i1.ytimg.com/vi/aa_wFClyiVE/default.jpg
在您的数据类中,我创建了这样一个对象。我猜缩略图对象正在设置为缩略图,tn在我这边也不起作用
private Thumbnail thumbnail;// instead of tn
结果输出为:-
Blood Glucose Hindi - Dr. Anup, MD Teaches Series
https://i1.ytimg.com/vi/aa_wFClyiVE/hqdefault.jpg
https://i1.ytimg.com/vi/aa_wFClyiVE/default.jpg
在您的数据类中,我创建了这样一个对象。我猜缩略图对象正在设置为缩略图,tn在我这边也不起作用
private Thumbnail thumbnail;// instead of tn
结果输出为:-
Blood Glucose Hindi - Dr. Anup, MD Teaches Series
https://i1.ytimg.com/vi/aa_wFClyiVE/hqdefault.jpg
https://i1.ytimg.com/vi/aa_wFClyiVE/default.jpg
哪一行是52?
System.out.println(data.getData().getTn().getHqDefault())代码>某些内容是空的。将链式调用拆分为带有临时变量的单独行,然后查看哪个是null
。它看起来确实像是getTn()
正在返回null
。是getTn()
为null。为什么不加载valueIs您的连接使用代理?检查在尝试连接时是否引发了任何异常,忽略它不是一个好主意。哪一行是52?System.out.println(data.getData().getn().getHqDefault())代码>某些内容是空的。将链式调用拆分为带有临时变量的单独行,然后查看哪个是null
。它看起来确实像是getTn()
正在返回null
。是getTn()
为null。为什么不加载valueIs您的连接使用代理?检查在尝试连接时是否引发了任何异常,忽略它不是一个好主意。哪一行是52?System.out.println(data.getData().getn().getHqDefault())代码>某些内容是空的。将链式调用拆分为带有临时变量的单独行,然后查看哪个是null
。它看起来确实像是getTn()
正在返回null
。是getTn()
为null。为什么不加载valueIs您的连接使用代理?检查在尝试连接时是否引发了任何异常,忽略它不是一个好主意。哪一行是52?System.out.println(data.getData().getn().getHqDefault())代码>某些内容是空的。将链式调用拆分为带有临时变量的单独行,然后查看哪个是null
。它看起来确实像是getTn()
正在返回null
。是getTn()
为null。为什么不加载valueIs您的连接使用代理?检查在您尝试连接时是否引发了任何异常,忽略它不是一个好主意。是的,这应该是一个注释。我看到值不为null,这是不可能的。在每个get方法中尝试一步,并观察哪个变量最终为null@manish SahuI已经修改了我的答案。过来看。也许会有帮助@manish SahugetTn()
为null,但如果您看到它的值不是null,我想获取这些值,这应该是一个注释。我已经看到值不是null,这是不可能的。在每个get方法中尝试一步,并观察哪个变量最终为null@manish SahuI已经修改了我的答案。过来看。也许会有帮助@文科硕士