简体   繁体   English

将JSONObject解析为自定义类

[英]parsing JSONObject to custom class

my data from my custom class isn't showing. 我的自定义类中的数据未显示。

I get my JSON object from php script and I store it in String result , then I try to insert it to my custom class Planets from that class I call specific variable by get Method but it doesn't show in my TextView result_tv 我从php脚本中获取了JSON对象,并将其存储在String result ,然后尝试将其插入到该类的自定义类Planets中,我通过get Method调用了特定变量,但该类未显示在TextView result_tv

here is code: 这是代码:

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

my class is: 我的课是:

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

and JSON object inside result string looks like this: 结果字符串中的JSON对象如下所示:

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

Rename your Planets class to Planet (to avoid conflict) 将您的Planets类重命名为Planet (以避免冲突)

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

Create another class named PlanetsList 创建另一个名为PlanetsList

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

Then call gson like so: 然后像这样调用gson:

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

Try something like this : 尝试这样的事情:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM