2016-11-09 68 views
1

我已经使用嵌套查询定义了一个restful服务。输出映射在XML中定义。我作为XML得到了适当的回应。但是,如果我要求使用接受的JSON响应:应用/ JSON我得到WSO2DSS 3.5.1 - 来自REST式服务的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 
      } 

任何帮助,请。这个区域还有一个bug吗?

回答

3

当您在输出响应中创建查询时,您可以定义要接收响应的格式,您可以选择xml或json,如果您提到可以选择json选项,则选择generate response this create这个json结构。

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

然后你可以修改你的字段所需的答案。下面是我如何使用它在我的查询

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

值以“$”的一个例子是对应于查询

关心的列的名称