我发帖说这是因为这种微妙的差异给了我半天的痛苦。希望这可以帮助别人。
toString方法将包含双引号,而getString方法则不包含。 我使用的是Oracle最新的Java EE Json软件包。
这是测试代码:
JsonArray jarr = Json.createArrayBuilder().add("testString1")
.add("teststr2").add("Another string").build();
System.out.println("Testing toString method");
for (JsonValue jv: jarr) {
System.out.println(jv.toString());
System.out.println(((JsonString)jv).getString());
}
System.out.println("Testing getString method");
for (int i=0; i<jarr.size(); ++i) {
System.out.println(jarr.getString(i));
}
JsonArray jarr = Json.createArrayBuilder().add("testString1")
.add("teststr2").add("Another string").build();
System.out.println("Testing toString method");
for (JsonValue jv: jarr) {
System.out.println(jv.toString());
System.out.println(((JsonString)jv).getString());
}
System.out.println("Testing getString method");
for (int i=0; i<jarr.size(); ++i) {
System.out.println(jarr.getString(i));
}
打印出上述代码:
Testing toString method "testString1" testString1 "teststr2" teststr2 "Another string" Another string Testing getString method testString1 teststr2 Another string
我正在使用字符串在地图中查找并且我得到了NULL。看着字符串我最初没注意双引号。我想知道为什么我得到了NULL而关键是'#34;肯定&#34;!
我不确定这是规范的一部分,字符串对象用双引号表示,而不带引号的字符串表示字符串本身。
答案 0 :(得分:0)
如果不需要这种行为,请不要使用JsonValue.toString()
:此函数会返回值的 JSON text representation (例如"str"
;所有JSON字符串值是这样引用的,而不是实际内容(例如str
)。
根据文档,
[JsonValue.toString]返回此JSON值的JSON文本。
该帖子不演示了一个问题&#34; NULL&#34;当在实例上调用时,它与JsonValue.toString()
无关。如果存在单独的问题,请提出单独的问题,并确保包含相关的测试用例。