Java 从字符串和映射构建JSON字符串<;字符串,字符串>;与GSon合作的领域?
我正试图围绕JSON编写一个包装器来发送websocket消息。我创建了这个类,它允许您使用事件名称进行构造,然后传递事件数据的关联数组 如何在Java 从字符串和映射构建JSON字符串<;字符串,字符串>;与GSon合作的领域?,java,json,gson,Java,Json,Gson,我正试图围绕JSON编写一个包装器来发送websocket消息。我创建了这个类,它允许您使用事件名称进行构造,然后传递事件数据的关联数组 如何在getString方法中解析JSON,如下是JSON的一个示例: { "event_name": "some event name", "event_data": { "some data": "some data value&quo
getString
方法中解析JSON,如下是JSON的一个示例:
{
"event_name": "some event name",
"event_data": {
"some data": "some data value",
"some more dat": "some more data value"
}
}
类别:
package com.eu.websockets.events.server;
import java.util.HashMap;
import java.util.Map;
public abstract class ServerWebSocketEvent {
private String eventName;
private Map<String, String> eventData;
public ServerWebSocketEvent(String eventName) {
this.eventName = eventName;
this.eventData = new HashMap<>();
}
public void addEventData(String key, String value) {
eventData.put(key, value);
}
public String getString() {
}
}
package com.eu.websockets.events.server;
导入java.util.HashMap;
导入java.util.Map;
公共抽象类ServerWebSocketEvent{
私有字符串eventName;
私有地图数据;
公共服务器WebSocketEvent(字符串eventName){
this.eventName=eventName;
this.eventData=newhashmap();
}
public void addEventData(字符串键、字符串值){
eventData.put(键、值);
}
公共字符串getString(){
}
}
要使字段名与您呈现的JSON中的字段名不同,您需要使用@SerializedName
指示,或者在这种情况下,您还可以将字段命名策略设置为Gson
因此,对于@SerializedName
:
@SerializedName("event_name")
private String eventName;
@SerializedName("event_data")
private Map<String, String> eventData;
...
public String getString() {
return new Gson().toJson(this)
}
您正在尝试将您的ServerWebSocketEvent
序列化为JSON,还是尝试将其从JSON反序列化?术语“解析”通常在反序列化数据时使用,但听起来像是要序列化。你能不能也展示一下你到目前为止已经尝试了什么(如果你有一些不起作用的代码)?我想获取一个字符串并映射,然后从它@Marcono1234创建一个JSON字符串发送回客户端。我的问题中包含了一个模板。
public String getString()
return new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.setPrettyPrinting() // This one is not needed use if you want to
.create().toJson(this);
}