有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java确定对象是数组还是字符串

我从服务器返回了一些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": ""
    } }

共 (1) 个答案

  1. # 1 楼答案

    你有这个

    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记住它,但我最近没有试过记住它