gpt4 book ai didi

json - 为什么 tWriteJSONField 为空值创建一个数组?

转载 作者:行者123 更新时间:2023-12-05 04:11:41 25 4
gpt4 key购买 nike

我已经在 OracleXE 的 HR 示例数据库中加入了国家到位置。

然后我使用 tMap 生成嵌套的 JSON 文档。

enter image description here

它有效,但由于某些原因,Location 中的空值作为数组出现在控制台的最终输出中(也尝试过 MongoDB)。

enter image description here

最佳答案

因为 tWriteJSONField 生成一个 xml,然后使用 json-lib 将其转换为 JSON。您的 null 值将被转换为一个空的 xml 节点 <STATE_PROVINCE/> , 和 json-lib,没有这个节点的上下文,将假定它是一个没有子节点的父节点,而不是一个空文本(此时 null 概念已经很远了)。

这里是简而言之:

package test.json;

public class JSONTest {

public static void main(String[] args) {
net.sf.json.xml.XMLSerializer s = new net.sf.json.xml.XMLSerializer();
s.clearNamespaces();
s.setSkipNamespaces(true);
s.setForceTopLevelObject(true);
net.sf.json.JSON json = s.read("<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>" +
"<org>" +
"<STATE_PROVINCE/>" +
"</org>"
);
System.out.println(json.toString());
}

}

结果:

{"org":{"STATE_PROVINCE":[]}}

一个肮脏的解决方案是在您的 tWriteJSONField 中使用属性而不是节点,但它会在您的属性前加上@。所以在这个组件之后你放了一个 tReplace,搜索 "\"@" , 替换为 "\"" ,取消选中整个单词,选中全局表达式。如果为 null,您的最终 JSON 将没有任何属性。

关于json - 为什么 tWriteJSONField 为空值创建一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42286527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com