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。
我正在尝试将一个简单的 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。