Java fromJson方法上的Gson崩溃

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

我试图将一个简单的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是-->
{“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”也不错。