Java JSON只允许一个顶级值?

Java JSON只允许一个顶级值?,java,json,parsing,gson,Java,Json,Parsing,Gson,我有以下Java对象: public class PersonDetails { private Person person; private List<Relative> relatives; public PersonDetails() {}; //getters and setters } 如何更改我的JSON使其有效 我当前的JSON: { "Person": { "id": "123",

我有以下
Java
对象:

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

    public PersonDetails() {};

    //getters and setters

    }
如何更改我的
JSON
使其有效

我当前的JSON:

{
    "Person": {

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

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

     }

    ]
}

“亲戚”可以是您的字段名,列表将是一个包含所需元素的javascript数组,如下所示:

{
    "Person": {

        "id": "123",
        "name: "stubName"
    },

    "Relatives": [{

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

         } ]
 }

“亲戚”可以是您的字段名,列表将是一个包含所需元素的javascript数组,如下所示:

{
    "Person": {

        "id": "123",
        "name: "stubName"
    },

    "Relatives": [{

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

         } ]
 }

我认为您的JSON结构不正确,GSON期望类似于:

{
  "person": {
      // Person object
  },
  "relatives": [ // Mind the plural!
      {
           //Relative object
      },
      {
           //another Relative object
      }
  ]
}
理由:一般来说,任何JSON库都会检查bean,寻找公共setter。如果您有一个setter,比如
setPerson(Person p)
,那么它将删除“set”前缀,然后切换下一个字母的大小写(“p”变为“p”),因此它将尝试创建一个
Person
对象,然后将其插入
Person
属性中


但是,我再次认为还有其他错误:该错误抱怨您有一个JSON字符串,如:
“{…},{…}”
,因此您有两个或更多顶级(也称为根)对象,这在JSON标准表示法中是不允许的。

我认为您的JSON结构不正确,GSON希望出现以下情况:

{
  "person": {
      // Person object
  },
  "relatives": [ // Mind the plural!
      {
           //Relative object
      },
      {
           //another Relative object
      }
  ]
}
理由:一般来说,任何JSON库都会检查bean,寻找公共setter。如果您有一个setter,比如
setPerson(Person p)
,那么它将删除“set”前缀,然后切换下一个字母的大小写(“p”变为“p”),因此它将尝试创建一个
Person
对象,然后将其插入
Person
属性中


但是,我认为还有其他错误:该错误抱怨您有一个JSON字符串,如:
“{…},{…}”
,因此您有两个或更多顶级(也称为根)对象,这在JSON标准表示法中是不允许的。

您应该使用验证器检查JSON。这是一个

这将显示您的JSON无效。有几个问题

首先,您有未关闭的引号-
“名称:
”关系:

其次,还有一个更基本的问题,那就是JSON对象只能包含命名字段的列表。你有:

{  
   "field1" : "Value 1",
   [
       { ... an array element ... }
   ]
}
因此,您试图拥有一个命名字段和一个未命名数组。这是不允许的

您可以通过为数组字段指定名称来解决此问题:

{  
   "field1" : "Value 1",
   "field2" : [
       { ... an array element ... }
   ]
}

现在顶级元素包含两个字段-
field1
是一个字符串,而
field2
是一个数组。

您应该使用验证程序检查JSON。这是一个

这将显示您的JSON无效。有几个问题

首先,您有未关闭的引号-
“名称:
”关系:

其次,还有一个更基本的问题,那就是JSON对象只能包含命名字段的列表。你有:

{  
   "field1" : "Value 1",
   [
       { ... an array element ... }
   ]
}
因此,您试图拥有一个命名字段和一个未命名数组。这是不允许的

您可以通过为数组字段指定名称来解决此问题:

{  
   "field1" : "Value 1",
   "field2" : [
       { ... an array element ... }
   ]
}

现在顶级元素包含两个字段-
field1
,它是一个字符串,而
field2
是一个数组。

这是我的问题,我的JSON结构不正确。这是我的问题,我的JSON结构不正确。如果您试图在其中添加带有数据的typescript文件,但将该文件命名为.JSON,则可能会出现此错误。如果您试图在其中添加带有数据的typescript文件,但将该文件命名为.JSON,则可能会出现此错误。