2014-10-10 6 views
-1

Это мой JSON ответ, который я получаю от сервера,Как разобрать ниже json с помощью библиотеки Google GSON?

{ 
"awards": [ 
    "31", 
    "33", 
    "44", 
    "45", 
    "46", 
    "48" 
] 
} 

, но когда я пытаюсь разобрать его, используя ниже код

@SerializedName("awards") 
    private UserAwards[] awards; 

    public class UserAwards { 

    } 

это дает мне следующее исключение:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 247. 

, пожалуйста, помогите мне найти его, как я могу разобрать это.

+0

'awards' является Json массив. показать полный код – Gattsu

+0

@Shiv Проверьте мой ответ. – GrIsHu

ответ

0

Проверьте это link, Если вы не можете сделать сам json для объекта.

import java.util.ArrayList; 
import java.util.List; 
import javax.annotation.Generated; 
import javax.validation.Valid; 
import com.google.gson.annotations.Expose; 

@Generated("org.jsonschema2pojo") 
public class UserAwards { 

    @Expose 
    @Valid 
    private List<String> awards = new ArrayList<String>(); 

    public List<String> getAwards() { 
     return awards; 
    } 

    public void setAwards(List<String> awards) { 
     this.awards = awards; 
    } 

} 
0

это для синтаксического анализа:

Gson gson = new GsonBuilder().setFieldNamingPolicy(
         FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); 
userAwards= gson.fromJson(jsonResponse.toString(), UserAwards.class); 

и ваш класс должен выглядеть

public class UserAwards{ 

    @Expose 
    private ArrayList<String> awards; 
} 

плюс добавить набор и получить методы :)

0

Разбираем его, как показано ниже:

private void parseResponse(final Reader p_response) { 
    m_handler.post(new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      if (p_response != null) { 
       Gson m_gson = new GsonBuilder().setFieldNamingStrategy(
         FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); 
       UserAwards m_details = m_gson.fromJson(p_response, 
         UserAwards.class); 
       if (m_details != null) { 

         for (int i = 0; i < m_details.awards.length; i++) { 
         System.err.println("IDs======" 
           + m_details.awards[i].toString()); 
         } 
        } 

сделать также свой класс POJO, как показано ниже:

public class UserAwards { 

    public List<String> awards = new ArrayList<String>(); 
} 
Смежные вопросы