Java fromJson方法上的Gson崩溃
我试图将一个简单的JSONObject转换成一个字符串,但不断出现崩溃Java fromJson方法上的Gson崩溃,java,android,json,gson,jsonobject,Java,Android,Json,Gson,Jsonobject,我试图将一个简单的JSONObject转换成一个字符串,但不断出现崩溃 classStr = (Class<T>) String.class; Gson gson = new Gson(); dataObject = gson.fromJson( obj, classStr ); classStr=(Class)String.Class; Gson Gson=新的Gson(); dataObject=gson.fromJson(obj,classStr); obj是-->{“my
classStr = (Class<T>) String.class;
Gson gson = new Gson();
dataObject = gson.fromJson( obj, classStr );
classStr=(Class)String.Class;
Gson Gson=新的Gson();
dataObject=gson.fromJson(obj,classStr);
obj是-->{“myData”:“1234”}
**当obj只是一个字符串(“myDate:1234”)时,它就工作了。创建一个模型类。
Class DataObject {
public String myData;
}
然后使用这个代码
Gson gson = new Gson();
DataObject dataObject = gson.fromJson(obj, DataObject .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);
}
public Object convertFromGson(字符串gsonString){
Gson Gson=新的Gson();
Type Type=new-TypeToken(){
}.getType();
返回gson.fromJson(gsonString,type);
}
例如,此处将对象视为HashMap:
public String convertToGsonString(HashMap<String,String> obj) {
Gson gson = new Gson();
return gson.toJson(obj);
}
public String convertToGsonString(HashMap obj){
Gson Gson=新的Gson();
返回gson.toJson(obj);
}
从GsonStringTo哈希映射转换:
public HashMap<String,String> convertFromGson(String gsonString) {
Gson gson = new Gson();
Type type = new TypeToken<HashMap<String,String>>() {
}.getType();
return gson.fromJson(gsonString, type);
}
public HashMap convertFromGson(字符串gsonString){
Gson Gson=新的Gson();
Type Type=new-TypeToken(){
}.getType();
返回gson.fromJson(gsonString,type);
}
下面的代码用于将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);
}
public Object convertFromGson(字符串gsonString){
Gson Gson=新的Gson();
Type Type=new-TypeToken(){
}.getType();
返回gson.fromJson(gsonString,type);
}
例如,此处将对象视为HashMap:
public String convertToGsonString(HashMap<String,String> obj) {
Gson gson = new Gson();
return gson.toJson(obj);
}
public String convertToGsonString(HashMap obj){
Gson Gson=新的Gson();
返回gson.toJson(obj);
}
从GsonStringTo哈希映射转换:
public HashMap<String,String> convertFromGson(String gsonString) {
Gson gson = new Gson();
Type type = new TypeToken<HashMap<String,String>>() {
}.getType();
return gson.fromJson(gsonString, type);
}
public HashMap convertFromGson(字符串gsonString){
Gson Gson=新的Gson();
Type Type=new-TypeToken(){
}.getType();
返回gson.fromJson(gsonString,type);
}
使用以下代码:
Gson Gson=新的Gson()
DataObject DataObject=gson.fromJson(obj,DataObject.class)
因为Gson fromJson方法的签名是:
public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException {
public T fromJson(字符串json,类classOfT)抛出JsonSyntaxException{
在这里,它返回类类型为T的对象。因此,与其使用String.class(不匹配的类类型),不如使用dataObject实例的类,否则它将抛出JsonSyntaxException。使用以下代码:
Gson Gson=新的Gson()
DataObject DataObject=gson.fromJson(obj,DataObject.class)
因为Gson fromJson方法的签名是:
public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException {
public T fromJson(字符串json,类classOfT)抛出JsonSyntaxException{
在这里,它返回类类型为T的对象。因此,与其使用String.class(不匹配的类类型),不如使用dataObject实例的类,否则它将抛出JsonSyntaxException。谢谢。有没有办法避免仅为此创建自定义类?可以通过HashMap实现吗?这样dataObject的键(String)=“myData”和值(字符串)=“1234”?不客气。是的,您可以,只需从JSONObject提取字符串值,并将其与键myData一起放入HashMap即可。@BVTP您的意思是在obj上调用字符串,然后将其放入HashMap?我如何将键和值分开?我可能误解了您的意思。谢谢AgainHanks。有没有办法避免仅为此创建自定义类?可以实现吗ted通过HashMap?所以dataObject的键(字符串)=“myData”和值(字符串)=“1234”?不客气。是的,您可以,只需从JSONObject中提取字符串值,并将其与键myData一起放入HashMap即可。@BVTP您的意思是调用obj上的字符串,然后将其放入HashMap?我该如何将键和值分开?我可能误解了您的意思。谢谢AgainHanks。我可以使用HashMap,但不必键入fromJson方法吗?
Map map=new HashMap();然后(Class)map.getClass();
这是我一直在寻找的解决方案,但是你的“type”也很好。谢谢。我可以将HashMap与Class一起使用而不是在fromJson方法中键入吗?map map=new HashMap();然后(Class)map.getClass()
这是我一直在寻找的解决方案,但你的“type”也不错。