gpt4 book ai didi

java - 判断一个对象是数组还是字符串

转载 作者:行者123 更新时间:2023-12-01 09:08:31 26 4
gpt4 key购买 nike

我有一些从服务器返回的 JSON 数据。

有时数据是一个数组,有时它返回一个空字符串(是的,我知道它应该返回一个空数组)。
所以我需要首先检查该类型是否是 String 的实例;如果是这样,我会忽略它并继续生活。
否则我需要读入值。

如何确定对象是否为字符串

我看过这个SO question还有其他一些,但我认为它不完全适合我的场景。
我觉得我已经很接近了,但我的代码失败,表示我无法将对象转换为字符串。
但如果我将它转换为字符串......那么它将始终是字符串的实例。无限循环。

这是我目前所处的位置。

private void myMethod(JSONObject data){
if (data.has("Notes")){
Object json = new JSONTokener(data.getJSONObject("Notes")).nextValue();

if(data.getJSONObject("Notes") instanceof String) {
JSONArray array = data.getJSONObject("Notes").getJSONArray("Note");
//do all the array stuff
}
}
}

带有数组的 JSON 示例

{ "Data": {
"key": "A value",
"another key": "some value",
"Notes": {
"Note": ["1", "2", "3", "4"]
} } }

不带数组的 JSON 示例

{ "Data": {
"key": "A value",
"another key": "some value",
"Notes": ""
} }

最佳答案

你有这个

Object json = new JSONTokener(data.getJSONObject("Notes")).nextValue();

但是您在这里没有使用 json 。您已第二次提取 getJSONObject("Notes")

if(data.getJSONObject("Notes") instanceof String) {

尝试

if(json instanceof String) {
<小时/>

如果这不起作用,我会尝试

JSONObject notesObj = data.optJSONObject("Notes");
if (noteObj == null) {
// It might be a string, but it was not an object
}

我不确定如果您仅对作为对象的值使用 getString("Notes") 会发生什么。它可能会toString它,但我最近没有尝试过记住。

关于java - 判断一个对象是数组还是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067518/

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