将 POJO 转换为 Map
Converting a POJO to Map
我有以下内容:
public class ChargeRequest {
@Expose
private String customerName;
@Expose
private String stripeToken;
@Expose
private String plan;
@Expose
private String[] products;
gettersAndSetters()...
public Map<String, Object> toMap() {
return gson.fromJson(this, new TypeToken<Map<String, Object>>() {
}.getType());
}
public String toString() {
return gson.toJson(this, getClass());
}
}
我正在尝试使用 Gson 将 ChargeRequest
转换为 Map<String, Object>
。
我的适配器:
public static class JsonAdapter implements JsonDeserializer<ChargeRequest>{
@Override
public ChargeRequest deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
ChargeRequest cr = new ChargeRequest();
JsonObject o = json.getAsJsonObject();
o.add("customerName", o.get("customerName"));
o.add("stripeToken", o.get("stripeToken"));
o.add("plan", o.get("plan"));
JsonArray jProds = o.get("products").getAsJsonArray();
cr.products = new String[jProds.size()];
for (int i = 0; i < jProds.size(); i++) {
cr.products[i] = jProds.get(i).getAsString();
}
return cr;
}
}
我得到:Type information is unavailable, and the target is not a primitive
字符串数组。怎么了?
最后更新:我终于决定搬回杰克逊,一切都按预期进行。
代码:
ObjectMapper om = new ObjectMapper();
Map<String, Object> req = om.convertValue(request, Map.class);
首先从对象
创建json
Gson gson = new GsonBuilder().create();
String json = gson.toJson(obj);// obj is your object
然后使用json
创建地图
Map<String,Object> result = new Gson().fromJson(json, Map.class);
资源Link:
- Create JSONObject from POJO
- How can I convert JSON to a HashMap using Gson?
Post一个简单的版本:
public final static Map<String, Object> pojo2Map(Object obj) {
Map<String, Object> hashMap = new HashMap<String, Object>();
try {
Class<? extends Object> c = obj.getClass();
Method m[] = c.getMethods();
for (int i = 0; i < m.length; i++) {
if (m[i].getName().indexOf("get") == 0) {
String name = m[i].getName().toLowerCase().substring(3, 4) + m[i].getName().substring(4);
hashMap.put(name, m[i].invoke(obj, new Object[0]));
}
}
} catch (Throwable e) {
//log error
}
return hashMap;
}
我有以下内容:
public class ChargeRequest {
@Expose
private String customerName;
@Expose
private String stripeToken;
@Expose
private String plan;
@Expose
private String[] products;
gettersAndSetters()...
public Map<String, Object> toMap() {
return gson.fromJson(this, new TypeToken<Map<String, Object>>() {
}.getType());
}
public String toString() {
return gson.toJson(this, getClass());
}
}
我正在尝试使用 Gson 将 ChargeRequest
转换为 Map<String, Object>
。
我的适配器:
public static class JsonAdapter implements JsonDeserializer<ChargeRequest>{
@Override
public ChargeRequest deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
ChargeRequest cr = new ChargeRequest();
JsonObject o = json.getAsJsonObject();
o.add("customerName", o.get("customerName"));
o.add("stripeToken", o.get("stripeToken"));
o.add("plan", o.get("plan"));
JsonArray jProds = o.get("products").getAsJsonArray();
cr.products = new String[jProds.size()];
for (int i = 0; i < jProds.size(); i++) {
cr.products[i] = jProds.get(i).getAsString();
}
return cr;
}
}
我得到:Type information is unavailable, and the target is not a primitive
字符串数组。怎么了?
最后更新:我终于决定搬回杰克逊,一切都按预期进行。
代码:
ObjectMapper om = new ObjectMapper();
Map<String, Object> req = om.convertValue(request, Map.class);
首先从对象
创建jsonGson gson = new GsonBuilder().create();
String json = gson.toJson(obj);// obj is your object
然后使用json
创建地图Map<String,Object> result = new Gson().fromJson(json, Map.class);
资源Link:
- Create JSONObject from POJO
- How can I convert JSON to a HashMap using Gson?
Post一个简单的版本:
public final static Map<String, Object> pojo2Map(Object obj) {
Map<String, Object> hashMap = new HashMap<String, Object>();
try {
Class<? extends Object> c = obj.getClass();
Method m[] = c.getMethods();
for (int i = 0; i < m.length; i++) {
if (m[i].getName().indexOf("get") == 0) {
String name = m[i].getName().toLowerCase().substring(3, 4) + m[i].getName().substring(4);
hashMap.put(name, m[i].invoke(obj, new Object[0]));
}
}
} catch (Throwable e) {
//log error
}
return hashMap;
}