您好我尝试解析JSON,如:
{"error":{"code":20,"message":"Transaction not found."}}
使用的代码是:
GulfBoxError errordetails= new Gson().fromJson(json, GulfBoxError.class);
System.out.println("RESULT :"+errordetails.getCode()+" "+errordetails.getMessage());
班级档案是:
public class GulfBoxError {
public int code;
public String message;
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
}
每次我尝试,我都没有在这里得到他的价值:
RESULT :0 null
任何想法为什么?我在这里缺少什么
答案 0 :(得分:0)
error
。代码应如下所示:
public class GufError{
public GulfBoxError error;
}
public class GulfBoxError {
public int code;
public String message;
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
}
GufError errordetails= new Gson().fromJson(json, GufError.class);
答案 1 :(得分:0)
你可以试试这个,如果你不想创建一个单独的类作为包装器:
Gson gson = new Gson();
JsonObject jsonObj = gson.fromJson(json,JsonObject.class);
GulfBoxError errordetails= gson.fromJson(jsonObj.get("error"), GulfBoxError.class);
System.out.println("RESULT :"+errordetails.getCode()+" "+errordetails.getMessage());
答案 2 :(得分:0)
您的GulfBoxError类并不正确。
你需要这样的东西:
public class GulfError{
public GulfBoxError error;
}
class GulfBoxError {
public int code;
public String message;
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
}
并以这种方式解析:
Gson gson = new Gson();
String filename="/...Pathtoyour/json.json";
JsonReader reader = new JsonReader(new FileReader(filename));
GulfError errordetails= gson.fromJson(reader, GulfError.class);
System.out.print("errordetails: " + gson.toJson(errordetails));
无论如何,如果你想使用GulfBoxError类,你可以这样做:
Type listType = new TypeToken<Map<String, GulfBoxError>>(){}.getType();
Map<String, GulfBoxError> mapGulfBoxError= gson.fromJson(reader,listType);
for (Map.Entry<String, GulfBoxError> entry : mapGulfBoxError.entrySet())
{
System.out.println("Key: " + entry.getKey() + "\nValue:" + gson.toJson(entry.getValue()));
}
如果您不想创建代表您的Json的对象,有时这可能很有用。