Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Json将字符串转换为数组_Java_Arrays_Json_String - Fatal编程技术网

Java 使用Json将字符串转换为数组

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

我有一个字符串形式的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": 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?你的代码做什么?