2016-11-10 6 views
3

json変換例外に直面しています。私はjsonをjavaオブジェクトに変換しています。JavaオブジェクトへのJSON変換例外

public class SurvivorZAMQuestionList implements Serializable { 
    public List<SurvivorZAMQuestionnaire> survivorZAMQuestionnaires; 
} 


public class SurvivorZAMQuestionnaire implements Serializable { 
    public String Suggestions; 

    public String PrefrenceId; 

    public String IsActive; 

    public String IsDelete; 

    public String DateCreated; 

    public String DateUpdated; 

    public String UserId; 

    public String QuestionnaireId; 

    public String Explanation; 
} 

しかし、私はそれが次のエラーを示しているJSONにJSONレスポンスを変換しています: - - : com.google.gsonここ

は私のJSONは

[ 
    { 
     "PrefrenceId":"228f176d-d224-32d7-9bb5-6287a06a68e8", 
     "UserId":"327e6c64-bc90-3ae8-8f7d-72837581ca13", 
     "QuestionnaireId":"41f31b11-47f5-3e29-8c88-1a3615c978a7", 
     "Suggestions":"", 
     "Explanation":"", 
     "IsActive":true, 
     "IsDelete":false, 
     "DateCreated":"2016-11-01 09:53:00.000", 
     "DateUpdated":"2016-11-01 09:53:17.000" 
    }, 
    { 
     "PrefrenceId":"52a74739-bdd3-33ac-a83f-72f60b1992b5", 
     "UserId":"327e6c64-bc90-3ae8-8f7d-72837581ca13", 
     "QuestionnaireId":"8cd5ac8e-89db-3d7b-bb2d-4e6735b245de", 
     "Suggestions":"", 
     "Explanation":"", 
     "IsActive":true, 
     "IsDelete":false, 
     "DateCreated":"2016-11-01 09:48:53.000", 
     "DateUpdated":"2016-11-01 09:53:15.000" 
    }, 
    { 
     "PrefrenceId":"ae7fc877-b26a-34d3-a5f3-244c7e777e08", 
     "UserId":"327e6c64-bc90-3ae8-8f7d-72837581ca13", 
     "QuestionnaireId":"d3b98cde-111c-30d5-a4c9-412a76b656eb", 
     "Suggestions":"Camping", 
     "Explanation":"", 
     "IsActive":true, 
     "IsDelete":false, 
     "DateCreated":"2016-11-01 09:53:02.000", 
     "DateUpdated":"2016-11-01 09:53:19.000" 
    }, 
    { 
     "PrefrenceId":"bcac0da7-31a6-345f-be82-ddff17c29b35", 
     "UserId":"327e6c64-bc90-3ae8-8f7d-72837581ca13", 
     "QuestionnaireId":"8fb1bda7-7ec8-3538-8aa8-ff84637764a4", 
     "Suggestions":"", 
     "Explanation":"", 
     "IsActive":true, 
     "IsDelete":false, 
     "DateCreated":"2016-11-01 09:53:07.000", 
     "DateUpdated":"2016-11-01 09:53:22.000" 
    }, 
    { 
     "PrefrenceId":"ff46ce3c-70cb-3d25-8dbb-10e9c46d4c2d", 
     "UserId":"327e6c64-bc90-3ae8-8f7d-72837581ca13", 
     "QuestionnaireId":"3afffc17-30e4-311f-a0fc-8daa3bda6c98", 
     "Suggestions":"", 
     "Explanation":"", 
     "IsActive":true, 
     "IsDelete":false, 
     "DateCreated":"2016-11-01 09:53:05.000", 
     "DateUpdated":"2016-11-01 09:53:20.000" 
    } 
] 

私のPOJOクラスです.JsonSyntaxException:java.lang.IllegalStateException:BEGIN_OBJECTが予想されていましたが、1行目の列2でBEGIN_ARRAYでした。

誰でも私がpojoクラスにないものを教えてもらえますか? どのような種類の開催者も感謝します。

+0

エラーから、json応答形式を変更するか、fetchig json応答用のメソッドを変更する必要があります。詳細については、コードを投稿してください。 –

+0

static getObject(文字列レスポンス、クラス clazz){ try { Object t = clazz.newInstance(); Field [] fields = clazz.getDeclaredFields(); Gson gson = new Gson(); リターン(T)gson。fromJson(レスポンス、クラッツ); } catch(InstantiationException e){ e.printStackTrace(); } catch(IllegalAccessException e){ e.printStackTrace(); } return null; } @Divyesh jsonへの応答を変換するための上記のコードを使用しています –

答えて

2

あなたの応答は適切ですが、解析が適切ではありません。だからまず、あなたのgradleファイルにGSONを追加します。今のリストにあなたのOBJを追加し、それを表示:)

1

エラーが明確にGsonはJsonObjectないJsonArrayを受け入れると述べ

try { 
     JSONArray array = new JSONArray("put your response here"); 
     Gson gson = new Gson(); 
     for (int i = 0 ; i <array.length();i++) 
     { 
      SurvivorZAMQuestionnaire obj = new SurvivorZAMQuestionnaire(); 
      obj.add(gson.fromJson(array.getJSONObject(i).toString(),SurvivorZAMQuestionnaire.class)); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

あなたの応答を解析するために、あなたのコードの下に使用

compile 'com.google.code.gson:gson:2.4'

。あなたのケースでは、応答JsonArrayJsonArrayのキーでJsonObjectに入れ、annotationSurvivorZAMQuestionListに入力します。このようにすれば、この問題を簡単にソートできます。

希望、これは便利です:)

0

あなたはGSONライブラリを使用しようとすることができます - >compile 'com.google.code.gson:gson:2.8.0'

List<SurvivorZAMQuestionnaire> survivorZAMQuestionnaires; 
... 

Gson gson = new Gson(); 
Type listType = new TypeToken<List<SurvivorZAMQuestionnaire>>(){}.getType(); 
survivorZAMQuestionnaires = gson.fromJson(jsonString, listType); 

Typejava.lang.reflect.Type;

0

あなたのJSONこの方法を解析し、

List<SurvivorZAMQuestionnaire> survivorZAMQuestionnaires = new  Gson().fromJson(json, new TypeToken<List<SurvivorZAMQuestionnaire>>() { 
    }.getType()); 
のインスタンスであります
+0

"SurvivorZAMQuestionList"型で解析する場合は、キー "survivorZAMQuestionnaires"を持つ新しいJsonObjectの下に完全なjsonを追加する必要があります。 – d4h

0

gsonのグラデル依存性を行う。

compile 'com.google.code.gson:gson:2.4' 

このようなコードを更新します。

private void parseJSON(String jsonMessage) throws JSONException { 
      if (jsonMessage.startsWith("[")) { 
       Type type = new TypeToken<List<SurvivorZAMQuestionnaire>>() 
       }.getType(); 
       List<SurvivorZAMQuestionnaire> survivorZAMQuestionnaireList =new Gson().fromJson 
         (jsonMessage, type); 
       Log.d("Print List",survivorZAMQuestionnaireList.toString()); 
      } 

     } 
+1

この回答が現在の問題を修正する際にOPを助ける方法についての説明をいくつか追加してください –

関連する問題