一、JsonObject轉對象報錯
在Json轉換過程中,由於數據格式不規範或者不符合要求,可能會導致Json轉換成對象時報錯。最常見的報錯信息就是:Json解析失敗、無法將Json轉換成Java對象等。在遇到這種情況時,我們可以添加對應的異常處理機制,比如try-catch語句塊,來解決這個問題。下面是一個演示:
try {
JSONObject jsonObject = new JSONObject(jsonString);
//json轉為Java對象
MyClass myClass = gson.fromJson(jsonObject.toString(), MyClass.class);
} catch (JSONException e) {
e.printStackTrace();
}
二、JsonObject轉對象會損傷精度
由於Json對象中包含的數據類型比較多,包括整型、浮點型、字元型等各種類型,因此在Json轉換的過程中,我們需要特別關注數據類型的精度問題。
當Json對象中存在超出Java數據類型範圍的數據時,我們需要採用BigInteger或BigDecimal來處理,以防止在轉換的過程中數據精度損失過大。下面是一個例子:
public class MyClass {
private BigDecimal price;
// getter & setter
}
JSONObject jsonObject = new JSONObject("{price:12.22222222222222222}");
MyClass myClass = gson.fromJson(jsonObject.toString(), MyClass.class);
System.out.println(myClass.getPrice()); // 12.22222222222222222
三、JsonObject轉對象
JsonObject轉換成對象是一個比較常見的操作,通常我們需要將Json數據轉換成對應的Java對象,以便在程序中使用。在Java中,我們需要使用Gson庫來完成Json轉換成對象的操作。下面是一個演示:
public class MyClass {
private String name;
private int age;
// getter & setter
}
JSONObject jsonObject = new JSONObject("{\"name\":\"Alice\",\"age\":20}");
MyClass myClass = gson.fromJson(jsonObject.toString(), MyClass.class);
System.out.println(myClass.getName()); // Alice
System.out.println(myClass.getAge()); // 20
四、對象有list
在Java中,我們可以將List對象添加到JsonObject中。下面是一個演示:
public class MyClass {
private String name;
private List hobbies;
// getter & setter
}
MyClass myClass = new MyClass();
myClass.setName("Alice");
List hobbies = new ArrayList();
hobbies.add("reading");
hobbies.add("travel");
myClass.setHobbies(hobbies);
//將Java對象轉為Json對象
JSONObject jsonObject = new JSONObject(myClass);
System.out.println(jsonObject.toString());
五、JsonObject轉對象list
在Java中,我們可以將Json數組轉換成List類型的對象。下面是一個演示:
String jsonArrayStr = "[{\"name\":\"Alice\",\"age\":20},{\"name\":\"Bob\",\"age\":30}]";
Type listType = new TypeToken<List>(){}.getType();
List myClassList = gson.fromJson(jsonArrayStr, listType);
for (MyClass myClass : myClassList) {
System.out.println(myClass.getName() + ": " + myClass.getAge());
}
六、Json轉對象
除了JsonObject之外,我們還可以將Json字元串轉換成對應的Java對象。下面是一個例子:
String jsonString = "{\"name\":\"Alice\",\"age\":20}";
MyClass myClass = gson.fromJson(jsonString, MyClass.class);
System.out.println(myClass.getName()); // Alice
System.out.println(myClass.getAge()); // 20
七、JsonObject轉對象為null
JsonObject轉換成對象的過程中,有可能遇到Json中的某個值是null,這時需要對這個null值進行特殊處理,避免程序出錯。下面是一個例子:
public class MyClass {
private String name;
public MyClass() {
this.name = "default";
}
// getter & setter
}
JSONObject jsonObject = new JSONObject("{\"name\":null}");
MyClass myClass = gson.fromJson(jsonObject.toString(), MyClass.class);
System.out.println(myClass.getName()); // default
八、JsonObject轉list對象
除了JsonObject轉換成Java對象的過程之外,我們還可以將Json數組轉換成List類型的Java對象。下面是一個例子:
String jsonArrayStr = "[{\"name\":\"Alice\",\"age\":20},{\"name\":\"Bob\",\"age\":30}]";
Type listType = new TypeToken<List>(){}.getType();
List myClassList = gson.fromJson(jsonArrayStr, listType);
for (MyClass myClass : myClassList) {
System.out.println(myClass.getName() + ": " + myClass.getAge());
}
九、JsonObject轉換為對象
在Json轉換成Java對象的過程中,除了JsonObject之外,我們還可以將Json數組中的數據轉換成對應的Java對象。下面是一個演示:
String jsonArrayStr = "[\"Alice\", \"Bob\", \"Charlie\"]";
Type collectionType = new TypeToken<Collection>(){}.getType();
Collection myClassList = gson.fromJson(jsonArrayStr, collectionType);
for (String name : myClassList) {
System.out.println(name);
}
十、Object對象轉為Json對象
除了將Json轉換為Java對象之外,我們還可以將Java對象轉換為Json對象。下面是一個演示:
public class MyClass {
private String name;
private int age;
public MyClass(String name, int age) {
this.name = name;
this.age = age;
}
// getter & setter
}
MyClass myClass = new MyClass("Alice", 20);
//將Java對象轉為Json對象
JsonObject jsonObject = gson.toJsonTree(myClass).getAsJsonObject();
System.out.println(jsonObject.toString());
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/155339.html