![](/img/trans.png)
[英]How to read the json data file I downloaded from firebase as gson?
[英]Runtime exception during onWebsocketMessage: How can I read my JSON event data in Java with GSon?
兩天前我開始學習 Java,我決定從我的第一個挑戰開始。 我快到了,但我遇到了下面顯示的異常。
Runtime exception during onWebsocketMessage
java.lang.ClassCastException: class com.google.gson.internal.LinkedTreeMap cannot be cast to class java.lang.String (com.google.gson.internal.LinkedTreeMap is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
at com.eu.habbo.websockets.WebSocketEventHandler.handleEvent(WebSocketEventHandler.java:29)
at com.eu.habbo.websockets.WebServer.onMessage(WebServer.java:35)
at org.java_websocket.server.WebSocketServer.onWebsocketMessage(WebSocketServer.java:673)
at org.java_websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:885)
at org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:819)
at org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:379)
at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:216)
at org.java_websocket.server.WebSocketServer$WebSocketWorker.doDecode(WebSocketServer.java:1046)
at org.java_websocket.server.WebSocketServer$WebSocketWorker.run(WebSocketServer.java:1028)
An error occurred on connection /***.**.***.***:58016:java.lang.ClassCastException: class com.google.gson.internal.LinkedTreeMap cannot be cast to class java.lang.String (com.google.gson.internal.LinkedTreeMap is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
這是我嘗試將 JSON 反序列化為 Java 映射的代碼。
代碼:(WebSocketEventHandler 的 handleEvent 方法):
public void handleEvent(WebSocket socket, String eventJson) {
Gson gson = new Gson();
Map<String, String> eventMap = gson.fromJson(eventJson, Map.class);
String eventName = eventMap.get("event_name"); // line29
String eventDataAsJson = eventMap.get("event_data");
System.out.println("eventName: " + eventName);
System.out.println("eventDataAsJson: " + eventDataAsJson);
}
客戶端代碼(發送 JSON):
{
'event_name': 'authenticate_with_sso',
'event_data': {
'sso_ticket': '**************'
},
}
首先創建一個映射 POJO 類來存儲您的 JSON 解析值。
嘗試使用此代碼示例使用 Gson 庫解析您的 JSON 數據
GsonBuilder gsonBuilder = new GsonBuilder();
//To handle date data if there is any
gsonBuilder.registerTypeAdapter(Date.class, new DateDeserializer());
ParsedObjectInfo info =gsonBuilder.create().fromJson(eventDataAsJson, ParsedObjectInfo.class);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.