Tôi cố gắng để phân tích dữ liệu JSON được gửi từ giao diện người dùng trong điều khiển của tôi sử dụng Spring xây dựng sự ủng hộ Jackson và đây là mã của tôiJsonMappingException không đơn-String phương pháp xây dựng/nhà máy Jackson
final Map<String, CartDataHelper> entriesToUpdateMap = new ObjectMapper().readValue(entriesToUpdate, new TypeReference<Map<String, CartDataHelper>>()
chuỗi JSON của tôi là
{"0":"{\"categoryCode\":\"shoes\",\"productCode\":\"300050253\",\"initialQty\":\"3\",\"leftoverQty\":\"0\",\"newQty\":\"3\"}",
"1":"{\"categoryCode\":\"shoes\",\"productCode\":\"300050254\",\"initialQty\":\"3\",\"leftoverQty\":\"0\",\"newQty\":\"3\"}"}
i kiểm tra định dạng JSON sử dụng một số dịch vụ trực tuyến và nó có vẻ hợp lệ, trong khi gto tryin phân tích dữ liệu JSON tôi đang nhận được ngoại lệ sau đây
org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class controllers.util.CartDataHelper] from JSON String; no single-String constructor/factory method
lớp CartDataHelper
tôi chứa các thuộc tính đơn giản để cho productCode
, categoryCode
vv với một constructor không có đối số
Dữ liệu JSON đó giống như dữ liệu được thoát kép. Vì vậy, trong khi nó có thể là hợp lệ, tôi không nghĩ rằng nó đại diện cho những gì bạn nghĩ rằng nó. Nó đại diện cho một đối tượng có hai thuộc tính ("0" và "1") mỗi đối tượng có một giá trị giống như một đối tượng được mã hóa JSON được biểu diễn dưới dạng một chuỗi. – Ramon
@Ramon: có cách nào để thay đổi cấu trúc để đáp ứng điều này không? –
Nó phụ thuộc vào mã sản xuất nó, tôi đoán vậy. – Ramon