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,则可能会出现此错误。