Java 如何使用多级数组遍历Gson对象
我正在尝试使用Gson库获取jSonJava 如何使用多级数组遍历Gson对象,java,android,json,gson,Java,Android,Json,Gson,我正在尝试使用Gson库获取jSonitems>item>image>transparent中的参数。其想法是捕获透明、透明_blank和透明_dark。但我不知道如何获得这些值,目前我已经创建了以下内容: Json { "date_layout":"day-month-year", "lastupdate":1547596830, "items":[{ "name":"Cleans Cuts", "featured":"true", "it
items>item>image>transparent
中的参数。其想法是捕获透明
、透明_blank
和透明_dark
。但我不知道如何获得这些值,目前我已经创建了以下内容:
Json
{
"date_layout":"day-month-year",
"lastupdate":1547596830,
"items":[{
"name":"Cleans Cuts",
"featured":"true",
"item":{
"image":"http:www.domain.com/unwanted_image.jpg",
"images":{
"transparent":"http:www.domain.com/desired_image1.jpg",
"transparent_blank":"http:www.domain.com/desired_image2.jpg",
"transparent_dark":"http:www.domain.com/desired_image3.jpg"
}
}
},
{
"name":"Cleans Cuts",
"featured":"true",
"item":{
"image":"http:www.domain.com/unwanted_image.jpg",
"images":{
"transparent":"http:www.domain.com/desired_image1.jpg",
"transparent_blank":"http:www.domain.com/desired_image2.jpg",
"transparent_dark":"http:www.domain.com/desired_image3.jpg"
}
}
}]
}
.main活动
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url = "http://www.example.com/file.json";
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
if(response.isSuccessful()){
String response_jSon = response.body().string();
Gson gson = new Gson();
Datos datosFinal = gson.fromJson(response_jSon, Datos.class);
for (int i=0; i<datosFinal.items.size(); i++){
Log.d("msg_2", datosFinal.items.get(i).name);
}
}
您还必须创建以下类来获取透明、透明\u blank和透明\u dark的值 Images.java
Item.java 替换此类:
public class Items{
private Item item;
private String name;
private String featured;
public Item getItem ()
{
return item;
}
public void setItem (Item item)
{
this.item = item;
}
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getFeatured ()
{
return featured;
}
public void setFeatured (String featured)
{
this.featured = featured;
}
}
public class Images{
private String transparent_blank;
private String transparent_dark;
private String transparent;
public String getTransparent_blank ()
{
return transparent_blank;
}
public void setTransparent_blank (String transparent_blank)
{
this.transparent_blank = transparent_blank;
}
public String getTransparent_dark ()
{
return transparent_dark;
}
public void setTransparent_dark (String transparent_dark)
{
this.transparent_dark = transparent_dark;
}
public String getTransparent ()
{
return transparent;
}
public void setTransparent (String transparent)
{
this.transparent = transparent;
}
添加此类:
public class Items{
private Item item;
private String name;
private String featured;
public Item getItem ()
{
return item;
}
public void setItem (Item item)
{
this.item = item;
}
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getFeatured ()
{
return featured;
}
public void setFeatured (String featured)
{
this.featured = featured;
}
}
public class Images{
private String transparent_blank;
private String transparent_dark;
private String transparent;
public String getTransparent_blank ()
{
return transparent_blank;
}
public void setTransparent_blank (String transparent_blank)
{
this.transparent_blank = transparent_blank;
}
public String getTransparent_dark ()
{
return transparent_dark;
}
public void setTransparent_dark (String transparent_dark)
{
this.transparent_dark = transparent_dark;
}
public String getTransparent ()
{
return transparent;
}
public void setTransparent (String transparent)
{
this.transparent = transparent;
}
}
另外,添加此类:
public class Item {
private Images images;
private String image;
public Images getImages ()
{
return images;
}
public void setImages (Images images)
{
this.images = images;
}
public String getImage ()
{
return image;
}
public void setImage (String image)
{
this.image = image;
}
}
现在,您将使用getter方法获得该值 您还必须创建以下类来获取transparent、transparent\u blank和transparent\u dark的值 Images.java
Item.java 替换此类:
public class Items{
private Item item;
private String name;
private String featured;
public Item getItem ()
{
return item;
}
public void setItem (Item item)
{
this.item = item;
}
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getFeatured ()
{
return featured;
}
public void setFeatured (String featured)
{
this.featured = featured;
}
}
public class Images{
private String transparent_blank;
private String transparent_dark;
private String transparent;
public String getTransparent_blank ()
{
return transparent_blank;
}
public void setTransparent_blank (String transparent_blank)
{
this.transparent_blank = transparent_blank;
}
public String getTransparent_dark ()
{
return transparent_dark;
}
public void setTransparent_dark (String transparent_dark)
{
this.transparent_dark = transparent_dark;
}
public String getTransparent ()
{
return transparent;
}
public void setTransparent (String transparent)
{
this.transparent = transparent;
}
添加此类:
public class Items{
private Item item;
private String name;
private String featured;
public Item getItem ()
{
return item;
}
public void setItem (Item item)
{
this.item = item;
}
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getFeatured ()
{
return featured;
}
public void setFeatured (String featured)
{
this.featured = featured;
}
}
public class Images{
private String transparent_blank;
private String transparent_dark;
private String transparent;
public String getTransparent_blank ()
{
return transparent_blank;
}
public void setTransparent_blank (String transparent_blank)
{
this.transparent_blank = transparent_blank;
}
public String getTransparent_dark ()
{
return transparent_dark;
}
public void setTransparent_dark (String transparent_dark)
{
this.transparent_dark = transparent_dark;
}
public String getTransparent ()
{
return transparent;
}
public void setTransparent (String transparent)
{
this.transparent = transparent;
}
}
另外,添加此类:
public class Item {
private Images images;
private String image;
public Images getImages ()
{
return images;
}
public void setImages (Images images)
{
this.images = images;
}
public String getImage ()
{
return image;
}
public void setImage (String image)
{
this.image = image;
}
}
现在,您将使用getter方法获得该值 json不是很干净,我建议您修改json字符串的生成方式,但如果您仍然希望在不修改json的情况下获得这些值,则需要将Items类更改为:
`public class items {
public String name;
public String featured;
public Item item;
}`
然后您需要创建另一个名为Item的类
`public class Item{
public String image;
public Image images;
}`
您还需要创建一个图像类,如下所示:
`public class Image {
public String transparent;
public String transparent_blank;
public String transparent_dark;
}`
然后,您可以在循环中记录这些值:
`Datos datosFinal = gson.fromJson(response_jSon, Datos.class);
for (int i=0; i<datosFinal.items.size(); i++){
Log.d("msg_2", datosFinal.items.get(i).item.images.transparent);
Log.d("msg_2", datosFinal.items.get(i).item.images.transparent_blank);
Log.d("msg_2", datosFinal.items.get(i).item.images.transparent_dark);
}`
`datosdatosfinal=gson.fromJson(response_jSon,Datos.class);
对于(int i=0;ijson不是很干净,我建议您修改json字符串的生成方式,但如果您仍然希望在不修改json的情况下获得这些值,则需要将Items类更改为:
`public class items {
public String name;
public String featured;
public Item item;
}`
然后您需要创建另一个名为Item的类
`public class Item{
public String image;
public Image images;
}`
您还需要创建一个图像类,如下所示:
`public class Image {
public String transparent;
public String transparent_blank;
public String transparent_dark;
}`
然后,您可以在循环中记录这些值:
`Datos datosFinal = gson.fromJson(response_jSon, Datos.class);
for (int i=0; i<datosFinal.items.size(); i++){
Log.d("msg_2", datosFinal.items.get(i).item.images.transparent);
Log.d("msg_2", datosFinal.items.get(i).item.images.transparent_blank);
Log.d("msg_2", datosFinal.items.get(i).item.images.transparent_dark);
}`
`datosdatosfinal=gson.fromJson(response_jSon,Datos.class);
对于(int i=0;i您必须使用
public class items {
public String name;
@Expose(serialize = false, deserialize = false)
public String featured;
@Expose(serialize = false, deserialize = false)
public item mItem;
}
public class item {
@Expose(serialize = false, deserialize = false)
public String image;
@Expose(serialize = false, deserialize = false)
public images mImages;
}
public class images {
@Expose(serialize = false, deserialize = false)
public String transparent;
@Expose(serialize = false, deserialize = false)
public String transparent_blank;
@Expose(serialize = false, deserialize = false)
public String transparent_dark;
}
您可以使用必须使用的来生成pojo
public class items {
public String name;
@Expose(serialize = false, deserialize = false)
public String featured;
@Expose(serialize = false, deserialize = false)
public item mItem;
}
public class item {
@Expose(serialize = false, deserialize = false)
public String image;
@Expose(serialize = false, deserialize = false)
public images mImages;
}
public class images {
@Expose(serialize = false, deserialize = false)
public String transparent;
@Expose(serialize = false, deserialize = false)
public String transparent_blank;
@Expose(serialize = false, deserialize = false)
public String transparent_dark;
}
您可以通过使用自动生成普通旧Java对象来生成pojo