JSON只允许一个顶级值?

jav*_*999 1 java parsing json gson

我有以下Java对象:

public class PersonDetails {
    private Person person;
    private List<Relative> relatives;

    public PersonDetails() {};

    //getters and setters

    }
Run Code Online (Sandbox Code Playgroud)

我正在尝试为此创建Stub JSON,以便我可以使用它将其解析为Java对象GSON.

当我尝试使用下面的JSON时,我收到错误:

JSON only allows one top level value
Run Code Online (Sandbox Code Playgroud)

我怎样才能改变JSON它以使其有效?

我当前的JSON:

{
    "Person": {

        "id": "123",
        "name: "stubName"
    },
    [
     "Relative": {

        "name": "relative1",
        "relation: "mother"

     }

    ]
}
Run Code Online (Sandbox Code Playgroud)

Pab*_*ano 6

我认为您的JSON结构不正确,GSON期待如下:

{
  "person": {
      // Person object
  },
  "relatives": [ // Mind the plural!
      {
           //Relative object
      },
      {
           //another Relative object
      }
  ]
}
Run Code Online (Sandbox Code Playgroud)

基本原理:通常,任何JSON库都会检查您的bean是否正在寻找公共setter.如果你有一个类似的setter setPerson(Person p),那么它将删除"set"前缀,然后将切换下一个字母的情况("P"变为"p"),因此它将尝试创建一个Person对象,然后将其插入person属性.

但是我再次认为还有其他错误:该错误抱怨你有一个JSON字符串,如:"{....},{....}"所以你有2个或更多顶级(又名根)对象,这在JSON标准表示法中是不允许的.