- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Jackson 反序列化一个 json 文件(我用 jackson 序列化)。 json 是一个简单的 HashMap,但当我尝试反序列化时,映射器会报错。
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.HashMap out of START_ARRAY token
我序列化的 HashMap 字符串.....
{
"0f861a9a-0a3e-40a7-8ff3-0b83d8070876" : {
"name" : "BAR.xml",
"filePath" : "/FOO/repo/BAR.xml"
},
"f3cbb32e-b7b8-4af1-b48b-7ea393de7971" : {
"name" : "BLAH.xml",
"filePath" : "/FOO/repo/BLAH.xml"
},
"012009b6-26e9-4bc1-9050-2a4ac9546c7e" : {
"name" : "Check System.xml",
"filePath" : "/FOO/repo/Check System.xml"
}
}
我尝试了两种不同的方法来完成这项工作,但都失败了...
//doesn't work
cache = (Map) mapper.readValue(bytes.toString(), new TypeReference<>>(){});
//doesn't work.
cache = (Map) mapper.readValue(bytes.toString(), TypeFactory.mapType(HashMap.class, String.class, UUIDInfo.class));
完整的堆栈跟踪
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.LinkedHashMap out of START_ARRAY token
at [Source: java.io.StringReader@32b9bd47; line: 1, column: 1]
at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:198)
at org.codehaus.jackson.map.deser.MapDeserializer.deserialize(MapDeserializer.java:151)
at org.codehaus.jackson.map.deser.MapDeserializer.deserialize(MapDeserializer.java:25)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2395)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1602)
at com.hp.oo.studio.shared.UUIDRegistry.UUIDRegistry.(UUIDRegistry.java:63)
at com.hp.oo.studio.shared.UUIDRegistry.UUIDRegistry.(UUIDRegistry.java:37)
at com.hp.oo.studio.shared.StudioShared.loadUUIDRegistry(StudioShared.java:93)
at com.hp.oo.studio.shared.StudioShared.start(StudioShared.java:42)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268)
at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:462)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at com.hp.oo.studio.StudioUI.registerFile(StudioUI.java:133)
at com.hp.oo.studio.StudioUI.findFilesInDirectory(StudioUI.java:125)
at com.hp.oo.studio.StudioUI.findFilesInDirectory(StudioUI.java:120)
at com.hp.oo.studio.StudioUI.start(StudioUI.java:75)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268)
at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:462)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
at org.eclipse.ui.internal.WorkbenchPlugin$1.run(WorkbenchPlugin.java:268)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:264)
at org.eclipse.ui.internal.registry.EditorDescriptor.createEditor(EditorDescriptor.java:235)
at org.eclipse.ui.internal.EditorManager.createPart(EditorManager.java:875)
at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:609)
at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
at org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(EditorAreaHelper.java:271)
at org.eclipse.ui.internal.EditorManager.setVisibleEditor(EditorManager.java:1459)
at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:972)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3563)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3212)
at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1595)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3563)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3212)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
1 Câu trả lời
public class ArrayMapDeserializer extends JsonDeserializer<>> {
@Ghi đè
public Map deserialize(JsonParser jp, DeserializationContext context)
throws IOException {
ObjectMapper mapper = (ObjectMapper) jp.getCodec();
if (jp.getCurrentToken().equals(JsonToken.START_OBJECT)) {
return mapper.readValue(jp, new TypeReference<>>() {
});
} khác {
//consume this stream
mapper.readTree(jp);
return new HashMap();
}
}
}
在类中声明
@JsonDeserialize(using = ArrayMapDeserializer.class)
private HashMap aliases = new HashMap();
我正在使用 Jackson 2.4.2。
Tôi hy vọng nó có ích.
关于java - Jackson:Map的反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362913/
Tôi đã đọc tài liệu về Python để thực sự hiểu rõ về ngôn ngữ Python và tìm thấy các hàm filter và map. Tôi đã sử dụng bộ lọc trước đây, nhưng chưa bao giờ sử dụng bản đồ, mặc dù tôi đã thấy điều này trong nhiều câu hỏi về Python trên SO
Câu hỏi này gợi ra cho tôi khi tôi đang cố in thứ tự các cấp độ của BST. Đây là Chuỗi Đặt hàng Trước: 4, 1, 2, 3, 5, 6, 7, 8 Chuỗi Đặt hàng Trước: 1, 2
Mã của tôi báo lỗi ở dòng đầu tiên của main(sequence test;) khi nói rằng đây là tham chiếu không xác định tới sequence::sequence(). Tôi không thể thay đổi mã trong main. Có ai biết làm thế nào tôi có thể
Có lẽ đây là điều đơn giản, nhưng tôi không tìm thấy thông tin gì về nó trong các hướng dẫn latex thông thường. Trong câu này: {\em hello\/} Mục đích của “\/” là gì? Câu trả lời hay nhất Đây được gọi là chỉnh sửa chữ nghiêng. Mục đích của nó là đảm bảo có khoảng cách thích hợp sau văn bản in nghiêng.
Khi tôi xóa tất cả các bản ghi khỏi bảng Postgresql rồi thử đặt lại trình tự để bắt đầu một bản ghi mới được đánh số 1 khi chèn, tôi nhận được các kết quả khác nhau: SELECT setval('tblname_id_seq', (SELE
Trong phiên bản 10.0.3, MariaDB đã giới thiệu một công cụ lưu trữ có tên là sequences. Hoạt động tùy ý của nó tạo ra một chuỗi số nguyên và sau đó kết thúc. Chuỗi chứa các số nguyên dương, theo thứ tự giảm dần hoặc tăng dần, và sử dụng giá trị bắt đầu, kết thúc và gia số. Không được phép trong nhiều truy vấn
Cách lấy chuỗi của một số nhất định trong Groovy, ví dụ: def number = 169 // cần một phương thức trong Groovy để tìm số liên tiếp
Về cơ bản, nếu đây là .NET thì nó sẽ trông như thế này: ISomething { string A { get; } int B { get; } } var somethings = new List
Hãy xem xét đoạn mã sau (cùng khối): A <= 1 A <= 2 Biến A có luôn được gán giá trị là 2 không? Hay sẽ có tình huống chạy đua và 1 hoặc 2 sẽ được chỉ định? Theo hiểu biết của tôi về phép gán không chặn thì biến A được phần cứng gán trong tương lai, vì vậy nó có thể
Tôi đang tìm kiếm danh sách các hành động và thứ tự của chúng khi chạy thiết lập WiX. Không hiểu sao trang web chính thức lại không cung cấp bất kỳ thông tin nào. Vấn đề cơ bản là tôi muốn lên lịch cho các hành động tùy chỉnh của mình một cách chính xác. Thông thường tôi cần đăng ký một DLL bằng cách sử dụng regsvr32.exe, mà chỉ có thể
Người mới bắt đầu học F# ở đây Tôi muốn tạo một kiểu là chuỗi của một kiểu cụ thể khác (sự kiện) với ít nhất một phần tử. Bất kỳ thành phần bổ sung nào cũng có thể được thêm vào sau. Thông thường trong C#, tôi sẽ tạo một lớp với một List
Là một phần trong quá trình xây dựng và phát triển cơ sở dữ liệu, tôi đang cố gắng tạo một tập lệnh có thể xóa tất cả các bảng và trình tự của người dùng. Tôi không muốn tạo lại người dùng vì điều đó sẽ yêu cầu nhiều quyền hơn mức cho phép. Tập lệnh của tôi tạo ra một thủ tục để xóa một bảng/chuỗi, thực hiện thủ tục và sau đó
Tôi muốn khôi phục chuỗi ngày giữa ngày đầu tiên của hai vectơ và ngày thứ hai của cùng một vectơ, .... Đây là một ví dụ: dates1 = as.Date(c('2015-10-01', '2015-03-27', '2015-0
Câu hỏi này đã có câu trả lời: sql ORDER BY nhiều giá trị theo thứ tự cụ thể? (12 câu trả lời) Đã đóng 9 năm trước. Tôi có một câu lệnh SQL và tôi muốn ORDER
Tôi muốn khôi phục chuỗi ngày giữa ngày đầu tiên của hai vectơ và ngày thứ hai của cùng một vectơ, .... Đây là một ví dụ: dates1 = as.Date(c('2015-10-01', '2015-03-27', '2015-0
Khi viết mã trong Java, tôi cần chia một chuỗi thành các ký tự "],[". Dưới đây là mã của tôi. thử (BufferedReader reader = new BufferedReader(new InputStream
Câu hỏi này đã có câu trả lời: Câu hỏi 14 của Project Euler (Bài toán Collatz) (8 câu trả lời) Đã đóng cách đây 9 năm. Tôi đang cố gắng tìm chuỗi Collatz của một số. sau đây
Tôi có một hàm thường quy process_letter_location(const char& c, string &word). Trong main của tôi, tôi khai báo một loạt các biến chuỗi như thế này: string s
Tôi cần tìm chuỗi domino dài nhất, với bộ 12 quân domino được chọn ngẫu nhiên. Tôi đã tạo đệ quy tất cả các khả năng của domino (91 khả năng sử dụng mệnh giá từ 0 đến 12). Domino được tạo thành từ một khối
Tôi có cấu trúc dữ liệu Seq kế thừa lớp vector nhưng có thêm một số chức năng bổ sung. Sử dụng cấu trúc dữ liệu này Seq Tôi có cấu trúc dữ liệu được xác định trước này: typedef Seq > MxInt2d; Bây giờ tôi muốn một cấu trúc chứa nhiều Mx
Tôi là một lập trình viên xuất sắc, rất giỏi!