Gson 在 fromJson 方法中崩溃

Gson crash at fromJson method

我正在尝试将一个简单的 JSONObject 转换为一个字符串,但总是崩溃。

classStr = (Class<T>) String.class;
Gson gson = new Gson();
dataObject = gson.fromJson( obj, classStr );

obj 是 --> { "myData" : "1234" }.
** 当 obj 只是一个字符串("myDate:1234")时它起作用。

制作模型class.

Class DataObject {
public String myData;
}

然后使用此代码。

Gson gson = new Gson();
DataObject dataObject = gson.fromJson(obj, DataObject.class);

下面的代码用于将 Java 或 Json 对象转换为 GsonString:

//Here Object may b collection object or any other java object
public String convertToGsonString(Object obj) {
    Gson gson = new Gson();
    return gson.toJson(obj);
}

将 gsonString 转换为对象:

 public Object convertFromGson(String gsonString) {

    Gson gson = new Gson();
    Type type = new TypeToken<Object>() {
    }.getType();
    return gson.fromJson(gsonString, type);
}

例如,这里将 Object 视为一个 HashMap:

public String convertToGsonString(HashMap<String,String> obj) {
    Gson gson = new Gson();
    return gson.toJson(obj);
}

从 GsonStringTo HashMap 转换:

public HashMap<String,String> convertFromGson(String gsonString) {

  Gson gson = new Gson();
  Type type = new TypeToken<HashMap<String,String>>() {
  }.getType();
  return gson.fromJson(gsonString, type);
}

使用下面的代码:

Gson gson = new Gson();

DataObject dataObject = gson.fromJson( obj, DataObject.class );

因为Gson的fromJson方法的签名是:

public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException {

这里是 returns class 类型 T 的对象。所以,不要使用 String.class(不匹配 class 类型),而是使用 class 的dataObject 实例,否则会抛出 JsonSyntaxException。