1

我正在为我的服务使用邮资 Db。当为任何字段定义 Null 时,DSS 给出了一些对象,所以我的前端也得到了相同的对象。但是他们期望“NULL”而不是这个他们得到 {@nil":"true"}我怎样才能获得 NULL 值 As NULL only 并且它也为此行创建自己的名称空间 http://www.w3.org/2001/XMLSchema-instance

username        password
===========  ============
NULL            NULL
kk             a123

对于上面我在 WSO2dss 方面变得像这样

<Datalist>
     <username xmlns="http:sps.in" xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
     <password xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
  </Datalist>

从我的 wso2esb 方面,我得到这样的 JSON

{"Body":{"Datalist":{"username":{"@nil":"true"},"password":{"@nil":"true"}}}}

但是我的前端服务期望采用以下格式,可以在上面进行修改

 {"Body":{"Datalist":{"username":"NULL","password":"NULL"}}}
4

2 回答 2

1

在 XML 中,指示特定 XML 节点的值为 NULL 的标准/推荐方法是通过符号 [xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/ XMLSchema 实例”]。如果任何标准 XML 解析器遇到此特定符号,则包含上述符号的元素将被视为具有 NULL 值的元素。这特别有用,当存在诸如“NULL”之类的值(不是实际的 NULL,而是包含字符“N”、“U”、“L”、“L”的字符串)时,因为无法区分真实的NULL 值和“NULL”字符流。

因此,处理这种情况的最佳方法是在客户端检查 @nil 属性,同时解析作为 Web 服务调用响应返回的 JSON 内容。或者,您可以在数据服务查询级别添加 XSLT 转换,以按照您想要的方式转换响应(以 XML 格式在 DSS 内部处理,然后返回 JSON 内容),以便您能够添加任何自定义规则和在返回到客户端之前转换响应。您可以参考产品包中“DSS_HOME/samples/dbs/excel/”目录中名为“ExcelSampleService.dbs”的示例数据服务,了解如何完成此操作的示例。

希望这可以帮助!

问候, 普拉巴斯

于 2013-06-19T15:01:55.697 回答
0

它对我有用。我只是通过像这样更改我的 AS(应用程序服务器)将这两个属性(xsi:nil,xmlns:xsi)放入我的 XML 中:

public static OMElement addAttributeNull(OMElement parametro){
    parametro.addAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance", null);
    parametro.addAttribute("xsi:nil", "true", null);
    return parametro;
}
于 2015-03-03T13:31:00.597 回答