我有以下内容:
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;
}
}
我遇到了这个问题:类型信息不可用,目标不是原始类型
,针对字符串数组。这是怎么回事?
最终更新:我最终决定返回Jackson并且一切正常。
代码:
ObjectMapper om = new ObjectMapper();
Map<String, Object> req = om.convertValue(request, Map.class);
Charge.create(map)
。 - Muli Yulzarygson.fromJson
接受一个 JSON 字符串,并尝试创建类型类,对吧? - OneCricketeer