【问题标题】:parsing JSONObject to custom class将 JSONObject 解析为自定义类
【发布时间】:2014-08-01 15:22:41
【问题描述】:

我的自定义类中的数据未显示。

我从 php 脚本中获取我的 JSON 对象并将其存储在字符串 result 中,然后我尝试将其插入到我的自定义类 Planets 从那个类中,我通过 get 方法调用特定变量,但它没有显示在我的 TextView result_tv

代码如下:

String jsonString = result;
Gson gson = new Gson();
Planets seznamPlanet = gson.fromJson(jsonString, Planets.class);
this.result_tv.setText(seznamPlanet.getPlanetName());
//this.result_tv.setText(jsonString); this works

我的班级是:

public class Planets {
    public String name;
    public Integer size;
    public Integer o2;
    public Integer atmosphere;

    public String getPlanetName() {
        return name;
    }

    public Integer getPlanetSize() {
        return size;
    }

    public Integer getPlanetO2() {
        return o2;
    }

    public Integer getPlanetAtmosphere() {
        return atmosphere;
    }
}

结果字符串中的 JSON 对象如下所示:

    {"Planets":[{"name":"Earth","size":"3","o2":"1","atmosphere":"1"},{"name":"Mars","size":"8","o2":"0","atmosphere":"0"}]}

【问题讨论】:

  • 你需要一个包含行星列表的类

标签: java php android json string


【解决方案1】:

将您的 Planets 类重命名为 Planet(以避免冲突)

public class Planet {
  public String name;
  public Integer size;
  public Integer o2;
  public Integer atmosphere;
}

创建另一个名为PlanetsList的类

public class PlanetsList {
    List<Planet> Planets; //rename was useful so we don't have List<Planets> Planets
}

然后像这样调用gson:

PlanetsList seznamPlanet = gson.fromJson(jsonString, PlanetsList.class);

【讨论】:

  • Planets seznamPlanet = gson.fromJson(jsonString, PlanetsList.class); 中没有错字,因为 Planets 不是类
【解决方案2】:

试试这样的:

 public class Planets {
    public Planet[] planets;

    @Override
    public String toString() {
        return (new Gson().toJson(this));
    }

    public final class Planet {
        public String name;
        public Integer size;
        public Integer o2;
        public Integer atmosphere;

        @Override
        public String toString() {
            return (new Gson().toJson(this));
        }
    }
}

【讨论】:

    猜你喜欢
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多