我正在尝试使用 Gson 库在 jSon items>item>image>images>transparent
中获取参数。这个想法是捕获transparent
,transparent_blank
和transparent_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"
}
}
}]
}
.MainActivity
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);
}
}
而且我只能进入.MainActivity日志中看到的项目。
Json的类对象
Datos.java
public class Datos {
public String date_layout;
public Int lastupdate;
List<items> items;
}
items.java
public class items {
public String name;
}
答案 0 :(得分:1)
您还必须创建以下类,以获取透明,transparent_blank和transparent_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 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方法获取值。
答案 1 :(得分:1)
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;
}`
您还需要创建一个 Image 类,如下所示:
`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);
}`
虽然这可能有效,但我强烈建议您重新制作json并使其易于维护。
答案 2 :(得分:1)
您必须使用
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