Tôi đang sử dụng thư viện jackson để serializing/deserializing đến/từ JSON. Tôi cần JSON này có kích thước nhỏ nhất có thể nên tôi đã bật tính năng ALLOW_UNQUOTED_FIELD_NAMES để loại bỏ tất cả các dấu ngoặc kép. Tôi biết rằng việc loại bỏ các trích dẫn không phải là tiêu chuẩn json, nhưng làm cho json nhỏ là một yêu cầu khó khăn của dự án. Các json tạo ra hoạt động, nhưng khi tôi đã cố gắng để đọc các giá trị json tôi nhận được một ngoại lệ:ALLOW_UNQUOTED_FIELD_NAMES trong jackon Thư viện JSON
org.codehaus.jackson.JsonParseException: nhân vật bất ngờ ('9' (mã 57)): đang mong đợi tên hợp lệ ký tự (đối với tên không được bỏ phiếu) hoặc báo giá kép (để được trích dẫn) để bắt đầu tên trường tại [Nguồn: [email protected]; dòng: 1, cột: 3]
Trường hợp ngoại lệ trên được ném khi tôi đọc json này:
{90110a2e-febd-470f-afa4-cf7e890d31b9:0,eec652ad-a4d9-4eb1-8d24-7c1a0c29449f:1}
Con đường tôi đọc nó là:
Map<String, Object> valuesMap = oM.readValue(json, new TypeReference<Map<String, Object>>() {});
và đối tượng người lập bản đồ tôi sử dụng cả để đọc và viết các giá trị là:
private static final ObjectMapper om = new ObjectMapper();
static {
om.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
om.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
om.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, true);
om.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
om.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
}
Tôi đang sử dụng phiên bản 1.6.3 của Jackson, trong cả dự án người gửi và người nhận. Phiên bản cần thiết cho tính năng này là 1,2+ vì vậy tôi nghĩ rằng có lẽ tôi đã không sử dụng phiên bản này, nhưng người nhận của tôi là một ứng dụng Spring và tôi đã kiểm tra thư viện được cài đặt trong thư mục libs là 1.6.3.
Tôi có thể làm gì sai? Có thể không sử dụng tính năng này với bản đồ.
Tôi có một câu hỏi khác, Cho đến nay tôi chỉ gửi một bản đồ trong đó khóa chỉ là giá trị uuid và giá trị là một số. Tôi có thể gặp bất kỳ sự cố nào nếu tôi gửi một giá trị có các ký tự đặc biệt với tính năng ALLOW_UNQUOTED_FIELD_NAMES không? Jackson sẽ thoát khỏi nhân vật này?
Cảm ơn.
Điểm rất tốt về Smile - nó có thể nhỏ gọn, đặc biệt. khi bật tham chiếu ngược giá trị chuỗi (nếu có nhiều giá trị chuỗi lặp lại, như giá trị được liệt kê) – StaxMan