Java 使用Gson解析嵌套JSON随机名称对象
我正在寻找一种简单的方法将这个JSON解析成Gson java类,以便轻松地将其放入适配器并填充一些列表视图问题在于项目的一部分,我不知道项目对象的名称,正如您所看到的,我在项目中有随机对象的名称,是否可以使用Gson进行此操作,或者我需要另一个代码逻辑,这是针对Android的,感谢您的帮助:Java 使用Gson解析嵌套JSON随机名称对象,java,android,json,gson,Java,Android,Json,Gson,我正在寻找一种简单的方法将这个JSON解析成Gson java类,以便轻松地将其放入适配器并填充一些列表视图问题在于项目的一部分,我不知道项目对象的名称,正如您所看到的,我在项目中有随机对象的名称,是否可以使用Gson进行此操作,或者我需要另一个代码逻辑,这是针对Android的,感谢您的帮助: [{ "id": 1001, "name": "Super1", "user": { "name": "The Super 1" }, "item
[{
"id": 1001,
"name": "Super1",
"user": {
"name": "The Super 1"
},
"items": {
"987987M7812b163eryrt": {
"id": 1,
"strong": 456,
"active": true,
"sell": "te"
},
"90812bn120893juuh": {
"id": 2,
"strong": 4700,
"active": true,
"sell": "tt"
},
"981273jn19203nj123rg": {
"id": 3,
"strong": 3000,
"active": true,
"sell": "ti"
}
}
}]
将GSON格式的代码添加到JAVA类中:
import com.google.gson.annotations.SerializedName;
public class test_de {
/**
* id : 1001
* name : Super1
* user : {"name":"The Super 1"}
* items : {"987987M7812b163eryrt":{"id":1,"strong":456,"active":true,"sell":"te"},"90812bn120893juuh":{"id":2,"strong":4700,"active":true,"sell":"tt"},"981273jn19203nj123rg":{"id":3,"strong":3000,"active":true,"sell":"ti"}}
*/
private int id;
private String name;
private UserBean user;
private ItemsBean items;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public UserBean getUser() {
return user;
}
public void setUser(UserBean user) {
this.user = user;
}
public ItemsBean getItems() {
return items;
}
public void setItems(ItemsBean items) {
this.items = items;
}
public static class UserBean {
/**
* name : The Super 1
*/
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static class ItemsBean {
/**
* 987987M7812b163eryrt : {"id":1,"strong":456,"active":true,"sell":"te"}
* 90812bn120893juuh : {"id":2,"strong":4700,"active":true,"sell":"tt"}
* 981273jn19203nj123rg : {"id":3,"strong":3000,"active":true,"sell":"ti"}
*/
@SerializedName("987987M7812b163eryrt")
private _$987987M7812b163eryrtBean _$987987M7812b163eryrt;
@SerializedName("90812bn120893juuh")
private _$90812bn120893juuhBean _$90812bn120893juuh;
@SerializedName("981273jn19203nj123rg")
private _$981273jn19203nj123rgBean _$981273jn19203nj123rg;
public _$987987M7812b163eryrtBean get_$987987M7812b163eryrt() {
return _$987987M7812b163eryrt;
}
public void set_$987987M7812b163eryrt(_$987987M7812b163eryrtBean _$987987M7812b163eryrt) {
this._$987987M7812b163eryrt = _$987987M7812b163eryrt;
}
public _$90812bn120893juuhBean get_$90812bn120893juuh() {
return _$90812bn120893juuh;
}
public void set_$90812bn120893juuh(_$90812bn120893juuhBean _$90812bn120893juuh) {
this._$90812bn120893juuh = _$90812bn120893juuh;
}
public _$981273jn19203nj123rgBean get_$981273jn19203nj123rg() {
return _$981273jn19203nj123rg;
}
public void set_$981273jn19203nj123rg(_$981273jn19203nj123rgBean _$981273jn19203nj123rg) {
this._$981273jn19203nj123rg = _$981273jn19203nj123rg;
}
public static class _$987987M7812b163eryrtBean {
/**
* id : 1
* strong : 456
* active : true
* sell : te
*/
private int id;
private int strong;
private boolean active;
private String sell;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getStrong() {
return strong;
}
public void setStrong(int strong) {
this.strong = strong;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public String getSell() {
return sell;
}
public void setSell(String sell) {
this.sell = sell;
}
}
public static class _$90812bn120893juuhBean {
/**
* id : 2
* strong : 4700
* active : true
* sell : tt
*/
private int id;
private int strong;
private boolean active;
private String sell;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getStrong() {
return strong;
}
public void setStrong(int strong) {
this.strong = strong;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public String getSell() {
return sell;
}
public void setSell(String sell) {
this.sell = sell;
}
}
public static class _$981273jn19203nj123rgBean {
/**
* id : 3
* strong : 3000
* active : true
* sell : ti
*/
private int id;
private int strong;
private boolean active;
private String sell;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getStrong() {
return strong;
}
public void setStrong(int strong) {
this.strong = strong;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public String getSell() {
return sell;
}
public void setSell(String sell) {
this.sell = sell;
}
}
}}
你可以使用GSON。定义
@SerializedName("items")
Map<String, Inner> items;
或者你可以使用一个定制的Gson
JsonDeserializer。
试着研究一下,如果项目本身已经有ID,为什么后端需要向你发送乱码密钥,而不仅仅是一个数组?谢谢@Submersed如果乱码的意思是987987M7812b163eryrt,90812bn120893juuh和981273jn19203nj123rg是因为它是后端拥有的另一个id_numeric_字符串。谢谢,我会尝试这个,我希望找到这样的东西,也就是说,一个简单的java类,我可以调用它来填充列表视图,而不管数量和对象名称如何。PD:我不熟悉自定义Gson JsonDeserializer。很抱歉,这实际上不起作用,无法访问值
public class Inner {
private int id;
private boolean active;
private int strong;
private String sell;
}