是否可以使用 JSONLib 从 getString 获取 null
我正在使用 JSON-lib 解析对象并从中读取字符串。这对于有效字符串来说效果很好,但也可以为空。例如:
JSONObject jsonObject = JSONObject.fromObject("{\"foo\":null}");
String str = jsonObject.getString("foo");
在本例中,我希望 str
为 null
,但实际上是 "null"
。调用任何其他方法似乎都会引发错误。如果值为字符串,是否可以让 JSONLib 解析字符串,但如果值为 null,则返回 null?
I'm using JSON-lib to parse an object and read a string from it. This works fine for a valid string but it can also be null. For example:
JSONObject jsonObject = JSONObject.fromObject("{\"foo\":null}");
String str = jsonObject.getString("foo");
In this case I would expect str
to be null
but it is instead "null"
. Calling any other method seems to throw an error. Is there anyway to have JSONLib parse a string if the value is a string but return null if the value is null?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
JSONObject.java:
您可以看到 getString() 永远不会返回 null。如果 o.toString() 这样做,它可以返回“null”,但这将是 String 而不是 null 值
JSONObject.java:
You can see that getString() never return null. It can return "null" if o.toString() do that but this will be String not null value
我找不到一个好的方法来做到这一点,所以我确实切换到 Jackson 。这允许我执行以下操作:
正如预期的那样,此示例将返回 null 。
I couldn't find a nice way to do this, so I did switch to Jackson instead. This allows me to do:
Which will return
null
for this example, as expected.这是已报告的 JSONLib 的一个错误。
https://github.com/douglascrockford/JSON-java/issues/5
将 jsonlib 升级到最新版本可能会修复它。
It's a bug of JSONLib which has been reported .
https://github.com/douglascrockford/JSON-java/issues/5
Upgrading your jsonlib to latest version will probably fix it.
为什么不使用 JSONObject::opt 呢?如果该键不存在,您将得到一个 null(不是“null”)。
Why not make use of JSONObject::opt? You'll get a null (not "null") if the key doesn't exist.