Java 如何使用GoogleGSON库解析下面的json?

Java 如何使用GoogleGSON库解析下面的json?,java,android,gson,Java,Android,Gson,这是我从服务器得到的json响应 { "awards": [ "31", "33", "44", "45", "46", "48" ] } 但当我试图用下面的代码解析它时 @SerializedName("awards") private UserAwards[] awards; public class UserAwards { } 这给了我以下的例外: com.google.gson.JsonSyntaxExceptio

这是我从服务器得到的json响应

{
 "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.
请帮助我找到如何解析此内容。

如果您自己无法将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;
    }

}
import java.util.ArrayList;
导入java.util.List;
导入javax.annotation.Generated;
导入javax.validation.Valid;
导入com.google.gson.annotations.Expose;
@生成(“org.jsonschema2pojo”)
公共类用户奖{
@暴露
@有效的
私有列表奖励=新的ArrayList();
公开名单{
回报奖;
}
公众奖项(名单奖项){
这个。奖励=奖励;
}
}
这是用于解析的:

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;
}
公共类用户奖励{
@暴露
私人ArrayList奖;
}
加上addset和get方法:)

如下解析:

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());
                        }
                    }
public class UserAwards {

     public List<String> awards = new ArrayList<String>();
 }
private void parseResponse(最终读卡器p_响应){
m_handler.post(新的Runnable(){
@凌驾
公开募捐{
//TODO自动生成的方法存根
if(p_响应!=null){
Gson m_Gson=new GsonBuilder().setFieldNamingStrategy(
FieldNamingPolicy.LOWER_CASE_WITH_下划线).create();
UserAwards m_details=m_gson.fromJson(p_响应,
用户奖励(类);
如果(m_详细信息!=null){
对于(int i=0;i
还可以按如下方式制作您的POJO课程:

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());
                        }
                    }
public class UserAwards {

     public List<String> awards = new ArrayList<String>();
 }
公共类用户奖励{
公共列表奖励=新的ArrayList();
}

奖励
是Json数组。显示完整的code@Shiv看看我的答案。