2017-10-16 72 views
0
正確的價值觀

您好我試圖解析JSON,如:JSON解析不會放棄使用GSON

{"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 

任何想法爲什麼?我在這裏丟失的東西

+1

[JSON解析錯誤使用gson]的可能重複(https://stackoverflow.com/questions/9915141/json-parse-error-using-gson) – Balasubramanian

+0

@ErikKralj什麼錯誤屬性? – Karthi

+0

@Balasubramanian。這不是重複的!問題可能似乎重複,但其實際上不同! – Karthi

回答

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); 
+0

爲什麼它會這樣做!我多次使用上述方法,併成功!這種情況只發生在這種情況下 – Karthi

+0

是的!愚蠢的錯誤!讓我檢查一下 – Karthi

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()); 
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的對象,這可能會很有用。