2017-10-16 6 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

gsonを使用した[JSON解析エラーの可能な複製](https://stackoverflow.com/questions/9915141/json-parse-error-using-gson) – Balasubramanian

+0

@ErikKraljどのようなエラープロパティですか? – Karthi

+0

@Balasubramanianこれは重複していません!質問は重複しているように見えるかもしれませんが、実際は違います! – Karthi

答えて

0
  • フィールドをカプセル化しない場合は、ゲッターは必要ありません。
  • オブジェクトはメールフォームです。トップレベルには、1つのフィールド(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クラスが正しくありません。

あなたはこのようなものが必要です。

:あなたはGulfBoxErrorクラスを使用したい場合は、あなたがこれを行うことが、とにかく

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

public class GulfError{ 
    public GulfBoxError error; 
} 

class GulfBoxError { 
    public int code; 
    public String message; 

    public int getCode() { 
     return code; 
    } 

    public String getMessage() { 
     return message; 
    } 
} 

そして、このようにそれを解析し

 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を表すオブジェクトを正確に作成したくない場合に便利です。