Tôi đang đọc một phản ứng JSON với Gson, trả về somtimes một NumberFormatException
vì giá trị mong đợi int
được đặt thành một chuỗi rỗng. Bây giờ tôi tự hỏi cách tốt nhất để xử lý loại ngoại lệ này là gì. Nếu giá trị là một chuỗi rỗng, các deserialization nên 0.Làm thế nào để xử lý một NumberFormatException với Gson trong deserialization một phản ứng JSON
mong đợi phản ứng JSON:
{
"name" : "Test1",
"runtime" : 90
}
Nhưng đôi khi thời gian chạy là một chuỗi rỗng:
{
"name" : "Test2",
"runtime" : ""
}
Lớp java trông giống như này:
public class Foo
{
private String name;
private int runtime;
}
Và quá trình deserialization là:
String input = "{\n" +
" \"name\" : \"Test\",\n" +
" \"runtime\" : \"\"\n" +
"}";
Gson gson = new Gson();
Foo foo = gson.fromJson(input, Foo.class);
Mà ném một com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: empty String
vì một chuỗi trống được trả về thay vì giá trị int.
Có cách nào để nói với Gson, "nếu bạn deserialize lĩnh vực này runtime
của Type Foo
và có một NumberFormatException, chỉ cần trả về giá trị mặc định 0"?
Giải pháp thay thế của tôi là sử dụng String
làm Loại trường runtime
thay vì int
, nhưng có thể có cách tốt hơn để xử lý các lỗi như vậy.
Điều này không trả lời chính xác câu hỏi của bạn, nhưng có lẽ bạn chỉ nên bỏ qua toàn bộ trường "thời gian chạy" từ JSON? –
Ngoài ra, điều gì sẽ xảy ra khi bạn thay đổi trường từ int thành Integer? –
JSON là phản hồi của dịch vụ web mà tôi không thể kiểm soát, nhưng tôi quan tâm đến thời gian chạy trường. Thay đổi trường thành Số nguyên không tạo ra sự khác biệt. – Soundlink