【发布时间】:2019-03-20 22:41:16
【问题描述】:
使用邮递员时,我收到以下错误
语法错误:意外的“S”
即使我的 JSON 字符串看起来不错。我看过类似的主题,通常说给响应对象一个可以正确转换为 JSON 的实体。我已经用 GSON 解析了一个宠物列表。
代码:
@Path("Pet")
public class PetResource {
@Context
private UriInfo context;
public PetResource() {
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getJson() {
PetMapper pm = new PetMapper();
JSONConverter jsonconv = new JSONConverter();
List<Pet> petList = pm.getPets();
String json = jsonconv.getJsonFromPets(petList);
return Response.ok().entity(json).build();
}
@PUT
@Path("/size")
@Consumes(MediaType.APPLICATION_JSON)
public Response getPetSize() {
PetMapper pm = new PetMapper();
return Response.ok(pm.getPetSize()).build();
}
}
GSon 转换器
public class JSONConverter {
static Gson gson = new GsonBuilder().setPrettyPrinting().create();
public String getJsonFromPets(List<Pet> pets) {
String petsString = "";
for (Pet pet : pets) {
petsString += gson.toJson(pet) + " ";
}
return petsString;
}
}
以下是我的原始回复
{
"id": 1,
"name": "Fiddo",
"birth": "2015-02-01",
"species": "Dog",
"owner_id": 1,
"events": []
} {
"id": 2,
"name": "Hannibal",
"birth": "2013-05-10",
"species": "Dog",
"owner_id": 1,
"events": []
} {
"id": 3,
"name": "Elvis",
"birth": "2010-08-08",
"species": "Cat",
"owner_id": 3,
"events": []
} {
"id": 4,
"name": "Sam",
"birth": "2012-01-05",
"species": "Rabbit",
"death": "2015-07-07",
"owner_id": 2,
"events": []
}
【问题讨论】:
-
这意味着您的回复未按预期发送。框架中可能存在异常,导致一些错误内容被向下发送。你能检查一下“原始”响应的样子吗?
-
我已经编辑了我的问题,底部的 json 是原始响应 :)
-
哦,是的,它不是有效的 JSON。它是多个未包含在父对象(对象或数组)中的对象,它们甚至没有用逗号分隔。