Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Spring Restful问题,列表长度为1_Spring_List_Rest - Fatal编程技术网

Spring Restful问题,列表长度为1

Spring Restful问题,列表长度为1,spring,list,rest,Spring,List,Rest,我们有一个json,它显示了一个对象列表,如下所示: skillCheckAnswers: [ { optionId: 6786, optionText: "Copy constructor", optionWeight: "1.00" }, { optionId: 6787, optionText: "Friend constructor", optionWeight: "2.00" }, { optionId: 6788, optionText: "Default constructor",

我们有一个json,它显示了一个对象列表,如下所示:

skillCheckAnswers: [
{
optionId: 6786,
optionText: "Copy constructor",
optionWeight: "1.00"
},
{
optionId: 6787,
optionText: "Friend constructor",
optionWeight: "2.00"
},
{
optionId: 6788,
optionText: "Default constructor",
optionWeight: "3.00"
},
{
optionId: 6789,
optionText: "Parameterized constructor",
optionWeight: "4.00"
}
]
只要列表中有一个以上的对象,这就可以了。但如果列表仅包含1项,则json将显示:

{
optionId: 6785,
optionText: "Friend class",
optionWeight: "4.00"
}
请注意,第二个Json不是作为列表提供的,而是作为单个对象提供的(缺少方括号[])

有没有一种方法可以输出带有方括号的长度为1的列表

编辑-- 我们可以将foreach用于第一个JSON,但如果对象数变为1,foreach将开始给出错误。为了处理这个问题,我们使用if-else循环来检查列表的长度是1还是大于1。如果列表有长度,那么我们将其作为单个对象处理。这似乎是一个愚蠢的解决方案,我想会有一个简单的出路


有人能告诉我这是否可行吗?

你提到过你使用Spring。Spring不会自动根据它提供的restful API为您的应用程序进行JSON转换。您可以放置类似以下内容的内容,这是您的conext文件:

您可以在上下文文件中使用并设置它来为您进行JSON转换


然后,您可以使用SpringMVC的@ResponseBody注释来提供restful服务,而不必手工编写JSON响应。

您提到您使用Spring。Spring不会自动根据它提供的restful API为您的应用程序进行JSON转换。您可以放置类似以下内容的内容,这是您的conext文件:

您可以在上下文文件中使用并设置它来为您进行JSON转换


然后,您可以使用Spring MVC的@ResponseBody注释提供restful服务,而不必手工编写JSON响应。

您应该执行以下操作:

从弹簧控制器:

@RequestMapping(method = RequestMethod.GET, value = "/myquestions")
public @ResponseBody
List<Answer> generateQuestions() {

  List<Answer> answers = new ArrayList<Answer>();
  Answer ans1 = new Answer();
  ans1.setOptionId("6785");
  ans1.setOptionText("Friend class");
  ans1.setOptionWeight("4.00");
  answers.add(ans1);

  return answers;
}

据我所知,您的问题与JSON转换器有关。我已经用Spring MappingJacksonHttpMessageConverter消息转换器进行了测试。关于如何配置JSON转换器,您可以查看Spring文档

您应该做如下操作:

从弹簧控制器:

@RequestMapping(method = RequestMethod.GET, value = "/myquestions")
public @ResponseBody
List<Answer> generateQuestions() {

  List<Answer> answers = new ArrayList<Answer>();
  Answer ans1 = new Answer();
  ans1.setOptionId("6785");
  ans1.setOptionText("Friend class");
  ans1.setOptionWeight("4.00");
  answers.add(ans1);

  return answers;
}

据我所知,您的问题与JSON转换器有关。我已经用Spring MappingJacksonHttpMessageConverter消息转换器进行了测试。关于如何配置JSON转换器,您可以查看Spring文档

如何创建输出?是否使用JAXB序列化列表?如何创建输出?您是否使用JAXB来序列化列表?如果您告诉我们1,我可以解释更多。restful服务(上面的数据)是由谁提供的,是如何提供的?i、 e.它是使用@ResponseBy注释的Spring MVC控制器吗。2.它是如何被使用/调用的?对不起,我对webservices不太熟悉,所以不太了解…我正在使用@GET和@products(application/json)。。在applicationcontext.xml中,我给出了:org.apache.cxf.jaxrs.provider.jsonprovider如果您一致地从Java端返回集合,那么它应该一致地作为JSON数组返回。我怀疑您返回的是单个元素(而不是一个1元素集合),因此它被序列化。嗨,Matt,我返回的是一个集合(数组列表),即使是单个元素。如果您告诉我们1,我可以解释更多。restful服务(上面的数据)是由谁提供的,是如何提供的?i、 e.它是使用@ResponseBy注释的Spring MVC控制器吗。2.它是如何被使用/调用的?对不起,我对webservices不太熟悉,所以不太了解…我正在使用@GET和@products(application/json)。。在applicationcontext.xml中,我给出了:org.apache.cxf.jaxrs.provider.jsonprovider如果您一致地从Java端返回集合,那么它应该一致地作为JSON数组返回。我怀疑您返回的是单个元素(而不是一个1元素集合),因此它被序列化。嗨,Matt,我返回的是一个集合(数组列表),即使是单个元素