Java 使用Json将字符串转换为数组
我有一个字符串形式的Json元素数组,我的问题是如何使用Gson将它们转换为和对象数组。 我在这个网站上找到了一些方法,但没有一个适合我的字符串Java 使用Json将字符串转换为数组,java,arrays,json,string,Java,Arrays,Json,String,我有一个字符串形式的Json元素数组,我的问题是如何使用Gson将它们转换为和对象数组。 我在这个网站上找到了一些方法,但没有一个适合我的字符串 ["2": {"id": 2, "name": "Cannonball", "sp": 5, "overall_average": 194, "buy_average": 193, "members": true, "sell_average": 193}, "6": {"id": 6, "name": "Cannon base", "sp": 1
["2": {"id": 2, "name": "Cannonball", "sp": 5, "overall_average": 194, "buy_average": 193, "members": true, "sell_average": 193},
"6": {"id": 6, "name": "Cannon base", "sp": 187500, "overall_average": 188110, "buy_average": 184547, "members": true, "sell_average": 185735},
"12289": {"id": 12289, "name": "Mithril platelegs (t)", "sp": 2600, "overall_average": 0, "buy_average": 3000, "members": false, "sell_average": 3000},
"8": {"id": 8, "name": "Cannon stand", "sp": 187500, "overall_average": 198445, "buy_average": 189001, "members": true, "sell_average": 190889},
"10": {"id": 10, "name": "Cannon barrels", "sp": 187500, "overall_average": 194418, "buy_average": 185164, "members": true, "sell_average": 185935},
"12": {"id": 12, "name": "Cannon furnace", "sp": 187500, "overall_average": 188000, "buy_average": 186524, "members": true, "sell_average": 186637},
"4099": {"id": 4099, "name": "Mystic hat (dark)", "sp": 15000, "overall_average": 9758, "buy_average": 9229, "members": true, "sell_average": 9528}]
我需要将数据转换为这个java对象
public class OSBuddyItem {
private final int id;
private final String name;
private final int sellPrice;
private final int buyPrice;
private final int averagePrice;
private final int storePrice;
private final boolean members;
public OSBuddyItem(int id, String name, int sellPrice, int buyPrice, int averagePrice, int storePrice, boolean members){
this.id = id;
this.name = name;
this.sellPrice = sellPrice;
this.buyPrice = buyPrice;
this.averagePrice = averagePrice;
this.storePrice = storePrice;
this.members = members;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getSellPrice() {
return sellPrice;
}
public int getBuyPrice() {
return buyPrice;
}
public int getAveragePrice() {
return averagePrice;
}
public int getStorePrice() {
return storePrice;
}
public boolean isMembers() {
return members;
}
}
这就是我所尝试的:
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonElement tradeElement = parser.parse(data);
JsonArray itemElements = tradeElement.getAsJsonArray();
OSBuddyItem[] items = gson.fromJson(itemElements,OSBuddyItem[].class);
for(OSBuddyItem item : items){
System.out.println(item.getName());
}
有人能告诉我如何使用Gson转换字符串吗 您的JSON字符串无效。您可以从[ 假设JSON字符串的格式为:-
[{"1": {"id": 2, "name": "Cannonball", "sp": 5, "overall_average": 194, "buy_average": 193, "members": true, "sell_average": 193}}]
假设模型名是示例。那么Json的模型将是:-
包com.example
导入com.google.gson.annotations.SerializedName
公开课范例{
@SerializedName("id")
private Integer id;
@SerializedName("name")
private String name;
@SerializedName("sp")
private Integer sp;
@SerializedName("overall_average")
private Integer overallAverage;
@SerializedName("buy_average")
private Integer buyAverage;
@SerializedName("members")
private Boolean members;
@SerializedName("sell_average")
private Integer sellAverage;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSp() {
return sp;
}
public void setSp(Integer sp) {
this.sp = sp;
}
public Integer getOverallAverage() {
return overallAverage;
}
public void setOverallAverage(Integer overallAverage) {
this.overallAverage = overallAverage;
}
public Integer getBuyAverage() {
return buyAverage;
}
public void setBuyAverage(Integer buyAverage) {
this.buyAverage = buyAverage;
}
public Boolean getMembers() {
return members;
}
public void setMembers(Boolean members) {
this.members = members;
}
public Integer getSellAverage() {
return sellAverage;
}
public void setSellAverage(Integer sellAverage) {
this.sellAverage = sellAverage;
}
}
使用GSON,您可以进行如下转换。
[注意:TypeToken类用于将JSON字符串加载到自定义对象中]
List<Example> myList = new Gson().fromJson(br, new TypeToken<List<JsonLog>>(){}.getType());
List myList=new Gson().fromJson(br,new TypeToken(){}.getType());
请展示您的努力,您的代码,而不仅仅是一个需要1分钟才能编写的类;)您发布的json实际上不是有效的json。这可能是您的问题吗?@azro添加了我上一次尝试的代码try@AlexBieg为什么它不是有效的json?你的代码做什么?