我正在使用邮资Db作为我的服务。当Null为任何字段定义时DSS给予某些对象,所以我的前端也得到相同的对象。但是他们期待“NULL”而不是这样他们得到{@nil“:”真正”} 我怎样才能获得NULL值仅作为NULL并且它也为此行创建自己的名称空间 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"}}}
答案 0 :(得分: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”字符流。
因此,处理此场景的最佳方法是在解析作为Web服务调用响应返回的JSON内容时检查客户端的@nil属性。或者,您可以在数据服务查询级别添加XSLT转换,以便以您希望的方式转换响应(以XML格式在DSS内部处理,然后返回JSON内容),以便您可以添加任何自定义规则和在将响应返回到客户端之前转换响应。您可以参考产品包中“DSS_HOME / samples / dbs / excel /”目录中名为“ExcelSampleService.dbs”的示例数据服务,以获取有关如何完成此操作的示例。
希望这有帮助!
此致 Prabath
答案 1 :(得分:0)
它对我有用。我只是通过更改我的AS(Application Server)将这两个属性(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;
}