Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
Gson-Json列表到Java列表<;对象>;_Java_Json_Gson - Fatal编程技术网

Gson-Json列表到Java列表<;对象>;

Gson-Json列表到Java列表<;对象>;,java,json,gson,Java,Json,Gson,我在将Json对象列表转换为Java列表时遇到了一些问题。我用的是GSon。 我有以下Json列表: {"player": [ {"id":"1","age":"25","name":"Neuer"}, {"id":"2","age":"26","name":"Cristiano Ronaldo"}, {"id":"3","age":"24","name":"Lionel Messi"} ] } public class PlayerDTO implem

我在将Json对象列表转换为Java列表时遇到了一些问题。我用的是GSon。 我有以下Json列表:

{"player":
    [
    {"id":"1","age":"25","name":"Neuer"},
    {"id":"2","age":"26","name":"Cristiano Ronaldo"},
    {"id":"3","age":"24","name":"Lionel Messi"}
    ]
}
public class PlayerDTO implements Serializable {

    private int id;
    private String name;
    private int age;

    //Getters and Setters
}
Type collectionType = new TypeToken<ArrayList<PlayerDTO>>(){}.getType();
List<PlayerDTO> players = gson.fromJson(jsonString, collectionType);
我有以下Java对象:

{"player":
    [
    {"id":"1","age":"25","name":"Neuer"},
    {"id":"2","age":"26","name":"Cristiano Ronaldo"},
    {"id":"3","age":"24","name":"Lionel Messi"}
    ]
}
public class PlayerDTO implements Serializable {

    private int id;
    private String name;
    private int age;

    //Getters and Setters
}
Type collectionType = new TypeToken<ArrayList<PlayerDTO>>(){}.getType();
List<PlayerDTO> players = gson.fromJson(jsonString, collectionType);
在我的Java类中,我正在做:

{"player":
    [
    {"id":"1","age":"25","name":"Neuer"},
    {"id":"2","age":"26","name":"Cristiano Ronaldo"},
    {"id":"3","age":"24","name":"Lionel Messi"}
    ]
}
public class PlayerDTO implements Serializable {

    private int id;
    private String name;
    private int age;

    //Getters and Setters
}
Type collectionType = new TypeToken<ArrayList<PlayerDTO>>(){}.getType();
List<PlayerDTO> players = gson.fromJson(jsonString, collectionType);

我理解这是因为Gson希望Json字符串的开头没有“player”。你能帮助我吗?谢谢

解决此问题的最简单方法是创建一个Players类作为玩家的集合

以下是
玩家
课程:

import java.util.ArrayList;
import java.util.List;
import com.google.gson.annotations.Expose;

public class Players {

@Expose
private List<Player> players = new ArrayList<Player>();

public List<Player> getPlayer() {
return player;
}

public void setPlayer(List<Player> player) {
this.player = player;
}

}
import com.google.gson.annotations.Expose;

public class Player {

@Expose
private String id;
@Expose
private String age;
@Expose
private String name;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

我的建议是创建一个
PlayerCollection
(?)类型,其中包含一个适当的players list属性。无论如何,请参见-但是这些方法似乎很粗糙,似乎gson现在可以使用它来避免额外的解析。因此,您试图跳过初始的“player”对象,只获取列表?不,我想知道我是否做错了什么,因为我相信Gson能够在Java列表中转换这个Json字符串。我相信这不是最好的解决方案。希望其他人能给我另一个解决方案。