我嘗試使用@NotNull
註釋,但它沒有奏效。如果JsonString
中缺少任何字段,則會給出null(String)
或zero(int)
。但是我想要的是如果在類中定義的JsonStr
中缺少任何字段應該拋出異常。我的PojoClass
可能有對象引用或多級對象引用。我正在使用Gson將String
轉換爲obj。 更多的澄清,我已經添加下面我的代碼:如何從JsonStr轉換爲PojoClassObj時拋出異常,如果在JsonStr中缺少任何鍵/值?
JsonStr:
{
"name":"John",
"id":1,
"roll":100,
"c":{
"city":"Dhaka",
"school":"B. govt. School"
}
}
代碼:
public class C {
private String city;
private String school;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
ClassB的:
public class B {
private String name;
private int id;
@NotNull
private int roll;
private C c;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getRoll() {
return roll;
}
public void setRoll(int roll) {
this.roll = roll;
}
public C getC() {
return c;
}
public void setC(C c) {
this.c = c;
}
}
個
MainClass:
try {
B obj = new B();
String str = "{\"name\":\"John\",\"id\":1,\"c\":{\"city\":\"dhaka\",\"school\":\"school\"}}";
obj = gson.fromJson(str, B.class);
} catch (RuntimeException e) {
System.out.println("exception Message");
}
對於現場輥,我用@NotNull
引發異常如果該字段不存在在JsonStr
但它給0值不引發任何異常。
我該如何實現?
請不要說這是重複的,因爲我已經看到這些問題:
您是否願意在main方法和immutableList的try塊中解釋一下「Q44362030.class」是什麼? 它給出了「getPackageResourceJsonReader」方法的錯誤。 – user404
@ user404這只是一個自定義的資源讀取工廠方法,它允許從Q ###。類中聲明的包中讀取這兩個JSON資源。它的名稱源自您在S.O的問題ID。你可以很容易地用'新的JsonReader'來代替它並傳遞任何東西給它。 'ImmutableList'只是一個來自Google Guava的列表工廠方法,可以替換爲'asList'。簡而言之,我只是迭代了從您的問題中借用的資源JSON文檔來測試解決方案。 –
感謝您的回覆。順便說一句,我試過這種方式,它仍然給出例外,雖然卷是存在於文件中。我的[鏈接](https://ideone.com/YNuMAM)。我幾乎迷失在這裏! – user404