WSO2DSS 3.5.1 - 来自RESTful服务的JSON响应问题

时间:2016-11-09 12:30:29

标签: wso2 wso2dss

我已经使用嵌套查询定义了一个restful服务。输出映射以XML定义。我得到了正确的XML响应。但是如果我使用Accept请求JSON响应:Application / json我得到

{
  "Fault": {
    "faultcode": "soapenv:Server",
    "faultstring": "Error while writing to the output stream using JsonWriter",
    "detail": ""
  }
}

我在3.5.0中得到了以下异常,我发现一个jira说它已在3.5.1中修复。所以我尝试了3.5.1现在我没有得到低于异常但是相同的输出。

javax.xml.stream.XMLStreamException: Invalid Staring element

请注意我在查询中也尝试了escapeNonPrintableChar="true"选项,但没有用。奇怪的是它适用于不同的数据集。只有一个特定的数据集会抛出此输出。

我已经更改了下面的JSON格式化程序并使其工作但是存在问题。

<messageFormatter contentType="application/json" class="org.apache.axis2.json.JSONMessageFormatter"/>
<!--messageFormatter contentType="application/json" class="org.apache.axis2.json.gson.JsonFormatter" / -->

<messageBuilder contentType="application/json" class="org.apache.axis2.json.JSONOMBuilder"/>
<!--messageBuilder contentType="application/json" class="org.apache.axis2.json.gson.JsonBuilder" /-->

如果我使用上面的格式化程序,则无法正确表示空值。就像我得到的那样

"Person": {
          "Name": {
            "@nil": "true"
          }

但我想要它(就像其他JSON格式化程序一样)

"Person": {
          "Name": null
          }

请帮忙。这个区域还有一个小虫吗?

1 个答案:

答案 0 :(得分:3)

当您在输出响应中创建查询时,您可以定义要接收响应的格式,您可以选择xml或json,在您提及的情况下,您可以选择json选项,然后选择生成响应,这会创建此json结构。

{
 "entries": {
 "entry": [
 {
 "field1": "$column1",
 "field2": "$column2"
 }
 ]
 }
}

然后,您可以修改字段所需的答案。以下是我在查询中如何使用它的示例

{
 "Pharmacies": {
 "Pharmacy": [
 {
 "ID": "$Id",
 "Descripcion": "$Desc",
 "Latitude": "$Latitude",
 "Longitude": "$Longitude",
 "Image": "$Image"
 }
 ]
 }
}

&#34; $&#34;的值对应于查询列的名称

此致